我们创建一个God类,再创建一个Person子类
public class God {
private int skill = 2;
private String postion;
public God(){
System.out.println("God Class Construtor");
}
public int getSkill() {
return skill;
}
public void setSkill(int skill) {
this.skill = skill;
}
public void setPostion(String postion) {
this.postion = postion;
}
public String getPostion() {
return postion;
}
}
public class Person extends God {
private int age = 100;
private String name = "abc";
Person(){
super();
System.out.println("Person Class Construtor");
}
public int getAge() {
return age;
}
public String getName() {
return name;
}
public void setAge(int age) {
this.age = age;
}
public void setName(String name) {
this.name = name;
}
}
那么 Person person = new Person();的过程是什么样的呢?
1、首先加载God.class 再加载Person.class
2、在栈中申请空间,声明引用变量person
3、在堆内存中开辟一个空间,并分配地址 如:CAD404
4、对对象中的属性默认初始化(包括父类)
5、子类构造函数方法进栈
6、显示初始化父类的属性
7、父类构造函数方法进栈,执行完出栈
8、显示初始化子类的属性
9、初始化结束后,讲堆内存的地址,赋值给引用变量然后子类构造函数方法出栈