就是一句话:从子类递归向上找,然后从祖先类递归向下执行;
一、对象的构造过程
实例变量的初始化如下(递归调用):
1、设置实例变量的值为缺省的初始值
2、调用对象的构造器和父类的构造器
3、如果构造器中有this()调用,则根据this()调用的参数调用相应的重载构造器,
4、除java.lang.Object类外,调用父类的中的初始化块初始化父类的属性,然后调用父类构造器
5、使用初始化程序和初始化块初始化成员
6、执行构造器方法体中其他语句
二、编程实战
代码的详细解读,可以参考视频教程
祖先类:Person.java
/**
* User: 祁大聪
*/
public class Person {
private Integer height;
public Person(){
System.out.println("Person()");
}
}
Person.java 的子类:Girl.java
/**
* User: 祁大聪
*/
public class Girl extends Person {
private Integer age;
public Girl(){
System.out.println("Girl()");
}
}
Girl.java 的子类:ChildGirl.java
/**
* User: 祁大聪
*/
public class ChildGirl extends Girl {
private String name; //null
public ChildGirl(){
System.out.println("ChildGirl()");
}
public ChildGirl(String name){
this();
this.name = name;
System.out.println("ChildGirl(name)");
}
public static void main(String[] args) {
ChildGirl g = new ChildGirl("sanNi");
System.out.println(g.name);
}
}