【发布时间】:2015-08-03 23:43:36
【问题描述】:
在 Java: The complete reference 一书中
// Demonstrate when constructors are called.
// Create a super class.
class A {
A() {
System.out.println("Inside A's constructor.");
}
}
// Create a subclass by extending class A.
class B extends A {
B() {
System.out.println("Inside B's constructor.");
}
}
// Create another subclass by extending B.
class C extends B {
C() {
System.out.println("Inside C's constructor.");
}
}
class CallingCons {
public static void main(String args[]) {
C c = new C();
}
}
输出: 在 A 的构造函数内部 B 的构造函数内部 C 的构造函数内部
它演示了如何调用子类的构造函数。但是为什么在没有 super() 构造函数的情况下调用超类的构造函数。
为什么 Java 语言设计者认为有必要这样做?
【问题讨论】:
-
除非
super(...)被显式调用为子构造函数的第一条语句,JVM 会自动添加对默认父构造函数的调用。这称为构造函数链接。
标签: java oop constructor