一、对象的初始化步骤(加载过程)
a、把类名.class文件加载到内存中(类加载器classloader)
b、在栈内存中开辟一个变量空间,给类对象的变量使用
c、new 类名()就会在堆内开辟空间
d、方法进方法区,用类名做标记,同时,成员变量进堆内存并给出了默认初始化值,如 引用类型为null,整数类型为0;
e、对成员变量进行显式初始化,如果有构造代码块,可以在构造代码块中对成员变量赋值
f、执行构造方法中对成员变量的赋值
g、对象初始化完毕,把堆内存的地址值赋值给栈内存的内变量
二、常量、this、super:字面值常量 如 “123”,final修饰的变量
final关键字特点:a、修饰的成员方法不能被子类重写 b、修饰的类不能被继承 c、修饰的成员变量就是一个常量
this关键字:代表本类对象的引用 super关键字:代表父类内存空间的标识
使用:this.变量:当前类的变量 this(...args):本类的其它构造方法 this.方法名():本类的方法
super.变量:父类的变量 super(...args):父类的构造方法 super.方法名():父类的方法
在静态方法中是没有this关键字的,因为静态是随着类的加载而存在,而this是对象创建才存在的。
三、方法重载与方法重写
方法重载: a、方法名称相同 b、方法的参数类型、个数、顺序至少有一项不同 c、方法返回类型可以不同 d、方法的修饰符可以不同
方法重写:子类重写父类或者抽象类以及接口中的方法,访问修饰符至少要大于等于要重写的方法的修饰符,并且名称相同,参数、参数类型、参数个数,返回类型要与父类相同
四、访问控制修饰符
public:对外公开,所有都能访问
protected:受保护级别,对子类和同一个包中的类公开
private:私有级别,只有类本身可以访问
默认:没有修饰符,向同一个包中的类公开(不包含不同包的子类)