java继承中的构造类的调用的问题,简而言之就是按照继承树向上走,走到最顶层的类时,开始执行构造器,按照原来追溯的路线向下执行各类的构造器。
有三个类,Creature <-Animal<-Hello
箭头指向为被继承的类
其中Animal中有三个构造器,其中有一个构造器调用了本类中的另一个构造器
Hello中的一个无参构造器调用了直接父类中的一个构造器(使用super)
则构造器的执行顺序是:
道理很好理解:就是按照我上面说的
创建Hello对象时,Hello的构造器中调用了Animal中的两参构造器,而两参的构造器又调用了本类中的一个参数的构造器。顶层类为Creature
(当然,你要说是java.lang.Object也是对的)
这样按照这个顺序回去就是截图所示了。
下面是代码:
class Creature
{
Creature(){
System.out.println("Creture的无参构造器");
}
}
class Animal extends Creature
{
Animal(String name , int age){
this(name);
System.out.println(name +"的年龄是" +age);
}
Animal(String name){
System.out.println("Animal的一个形参" + name);
}
Animal(){}
}
public class Hello extends Animal
{
Hello(){
super("你好",30);
System.out.println("Hello的无参构造器");
}
public static void main(String[] args)
{
//System.out.println("Hello World!");
new Hello();
}
}