https://blog.csdn.net/m0_57094519/article/details/121085452

下面是 People 和 Child 类的定义和构造方法,每个构造方法都输出编号。在 执行 new Child("mike") 的时候都有哪些构造方法被顺序调用?请写出输出结果

class People {
 
    String name;
 
    public People() {
 
        System.out.print(1);
 
     }
 
    public People(String name) {
 
        System.out.print(2); this.name = name;
 
    }
 
}
class Child extends People {
 
    People father;
 
    public Child(String name) {
 
          System.out.print(3);
 
          this.name = name;
 
          father = new People(name + ":F");
 
         }
 
       public Child() {
 
            System.out.print(4);
 
         }
 
}
public static void main(String[] args) {
        new Child("mike");
    }

运行结果:

132

调用顺序:

1,

People中的public People()

public People() { System.out.print(1); }

2,

Child中的public Child(String name)

public Child(String name) {

System.out.print(3);

this.name = name;

father = new People(name + ":F");

}

3,

People中public People(String name)

public People(String name) { System.out.print(2); this.name = name; }

原因:

要调用子类中的public Child(String name)

先调用父类的无参构造函数 public People()

public People()中运行

father = new People(name + ":F");

调用有参构造函数

public People(String name)