我已经运行了这段代码

public class Redimix extends Concrete{

    Redimix(){
        System.out.println("r ");
    }

    public static void main(String[] args) {
        new Redimix();
    }

}

class Concrete extends Sand{
    Concrete() { System.out.print("c "); }
    private Concrete(String s) { }
}

abstract class Sand{
    Sand(){
        System.out.print("s ");
    }
}


并打印出s c r,但是我期望的是,只有r这个问题的逻辑解释是什么?

如果父基类是具有构造函数的抽象类,则我们创建另一个类,然后将其扩展到基类(在我们的案例中,Concrete扩展Sand),然后我们创建另一个类,然后将其扩展到具体的类名(在我们的例子中为redimix)是否将调用该层次结构中的所有构造函数?(从上到下)

最佳答案

超类的构造函数始终被称为构造函数的第一个动作。

如果未显式调用超类的构造函数,则默认构造函数(“ no args”一个)将被隐式调用。

10-04 22:39