/** * 构造器的调用顺序 * 子类在产生对象实例时首先会调用父类的构造函数,如果没有显示指定调用父类自定义的构造函数, * 那么编译器会默认调用super()。如果父类的构造函数中带参数,就必须在子类中指定调用它,否则 * 会因找不到super而报错。 */ class Animal{ Animal(){ System.out.println("Class Animal"); } } class Fish extends Animal{ Fish(){ System.out.println("Class Fish"); } } class GoldFish extends Fish{ GoldFish(){ System.out.println("Class GoldFish"); } } public class TestInheritanceConstructor extends Animal{//首先调用 private GoldFish goldfish = new GoldFish();//其次调用 public TestInheritanceConstructor(){ System.out.println("TestInheritanceConstructor");//最后调用 } public static void main(String[] args){ new TestInheritanceConstructor(); } } /** *输出结果: * Class Animal * Class Animal * Class Fish * Class GoldFish * TestInheritanceConstructor */