我已经运行了这段代码
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”一个)将被隐式调用。