Java —— 教练,我想搬砖!

Java 基础:构造方法

2018-06-11  本文已影响5人  千面娇你妹的娃

目录:
一、 概述
二、 构造方法的重载
三、 类的初始化过程
四、this 关键字
五、子父类中的构造方法
六、 super 关键字
七、 static 关键字
八、 final 关键字


一、 概述

1. 构造方法作用和定义
修饰符 构造方法名 (参数列表){

}
2. 构造方法的特点

也不需要写返回值。因为它是为构建对象的,对象创建完,方法就执行结束。

3. 注意事项

构造方法的内存图

构造方法

二、 构造方法的重载

意义在于:可以根据不同的需求,定义不同的构造方法,灵活地初始化对象的成员变量

class Person {
    private int age;
    private String name;

    // 私有无参数的构造方法,即外界不能通过new Person();语句创建本类对象
    private Person() {
    }
    // 多个构造方法是以重载的形式存在
    Person(int a) {
        age = a;
    }
    Person(String nm, int a) {
        name = nm;
        age = a;
    }
}

三、 类的初始化过程

  1. 加载 Student.class 文件进入内存
  2. 内存为 s 开辟空间
  3. 内存为学生对象开辟空间
  4. 对学生对象的成员变量进行默认初始化
  5. 对学生对象的成员变量进行显示初始化
  6. 通过构造方法对学生对象的成员变量赋值
  7. 学生对象初始化完毕,把对象地址赋值给 s 变量

四、this 关键字

1. this 关键字:本类对象的引用
2. 成员变量隐藏

五、子父类中的构造方法

1. 调用
子类初始化内存图:
子类初始化
2. 当父类中没有无参数构造方法的时候,怎么办?

注意:本类中的其他构造方法必须已经能够正常访问父类构造方法

3. 为什么子类对象创建都要访问父类中的构造方法?

总结:子类的初始化要保证,在初始化子类成员之前,必须首先初始化父类成员,因为,子类功能的实现,常常会依赖父类,所以在初始化的时候,保证先初始化父类,再初始化子类

4. 创建子类对象过程的细节

这时是没有的,因为 this() 或者 super(),只能定义在构造方法的第一行,因为初始化动作要先执行。

也是有的。只要是构造方法默认第一行都是 super();


六、 super 关键字

指的是父类的存储空间(理解为父类的引用)

关键字super 可以在任意的非静态方法中使用


七、 static 关键字

1. static 特点

也就是说,多个对象在访问或修改 static 修饰的成员变量时,其中一个对象将 static 成员变量值进行了修改,其他对象中的 static 成员变量值会跟着改变,即多个对象共享同一个 static 成员变量

访问静态成员的格式:

  1. 类名.静态成员变量名
  2. 类名.静态成员方法名(参数)
  3. 对象名.静态成员变量名 ------不建议使用该方式,会出现警告
  4. 对象名.静态成员方法名(参数) -----不建议使用该方式,会出现警告
2. static 注意事项
3. 静态变量和成员变量的区别
静态变量和方法的初始化内存图:
静态变量和方法的初始化
4. 定义静态常量
public static final 数据类型 变量名 = 值;
  1. 当我们想 使用类的静态成员 时,不需要创建对象,直接使用类名 来访问即可
  2. 接口中的每个成员变量都 默认 使用public static final 修饰。
  3. 所有接口中的成员变量已是 静态常量,由于接口没有构造方法,所以必须 显示 赋值。可以直接用 接口名 访问。

八、 final 关键字

1. 概述
2. 特点
3. 自定义常量的初始化

注意事项: 如果通过构造方法,来对自定义常量进行初始化,要保证,每一个构造方法中 都必须有初始化自定义常量的初始化语句

上一篇 下一篇

猜你喜欢

热点阅读