class Person{
Person(){
}
}
class Student extends Person{
int age = 20; //显示初始化
Student(int age){
//super() 子类默认调用父类的构造方法
this.age = age;
}
}
public class Demo{
public static void main(String[] args){
Student student = new Student(18); //特定初始化
}
}
实例化过程:
1、JVM 会读取指定路径下的Student.class文件,并加载进内存,有直接父类Person,并会先加载Student的父类。
2、在堆内存中开辟空间,分配地址。
3、在对象空间中,对对象的属性进行默认初始化,此时先将age默认初始化为0。
4、调用Student的构造函数进行初始化。
5、在构造函数中,第一行调用父类的构造函数,此时age的值为0。
6、父类构造函数完毕后,对子类的属性进行显示初始化,即执行age = 20。
7、通过子类的构造函数,对子类的属性进行特定值的初始化,即执行Student(18),此时age = 18;
8、初始化完毕,将地址赋值给引用变量