父类与子类构造方法的执行顺序
最高级类
package com.hpe.demo2;
//生物类
public class Creator {
private int age;
public Creator() {
System.out.println("Creator的无参构造方法执行了");
}
}
第二级类
package com.hpe.demo2;
//动物类
public class Animal extends Creator {
private String name;//名字
public Animal() {
System.out.println("Animal类的无参构造方法执行了");
}
}
第三级类
package com.hpe.demo2;
//狗类
public class Dog extends Animal{
private String hostName;//主人的名字
public Dog() {
System.out.println("dog类的无参构造方法执行了");
}
public Dog(String hostName) {
this.hostName = hostName;
System.out.println("dog类的有参构造方法执行了");
}
}
测试类
package com.hpe.demo2;
public class TestDog {
public static void main(String[] args) {
Dog d=new Dog();
System.out.println("-----------------------");
Dog 小汪 = new Dog("小汪");
}
}
结果:
Creator的无参构造方法执行了
Animal类的无参构造方法执行了
dog类的无参构造方法执行了
--------------------------------------------------
Creator的无参构造方法执行了
Animal类的无参构造方法执行了
dog类的有参构造方法执行了
说明:
由此我们可以看到子类的构造方法执行完之前,先将父类的无参构造方法执行完毕。
个人理解:
这也是子类能够使用父类的属性和方法的一部分原因。
这也是为什么一个类写了有参构造函数的时候必须写上无参构造的一部分原因。