考虑这段代码:
class Test {
Test() {
System.out.println("In constructor of Superclass");
}
int adds(int n1, int n2) {
return(n1+n2);
}
void print(int sum) {
System.out.println("the sums are " + sum);
}
}
class Test1 extends Test {
Test1(int n1, int n2) {
System.out.println("In constructor of Subclass");
int sum = this.adds(n1,n2);
this.print(sum);
}
public static void main(String[] args) {
Test1 a=new Test1(13,12);
Test c=new Test1(15,14);
}
}
如果我们在超类中有一个构造函数,它将被我们为子类构造的每个对象调用(例如对象 a
类 Test1
调用 Test1(int n1, int n2)
以及它的父母 Test()
)。
为什么会这样?
这个程序的输出是:
在超类的构造函数中
在子类的构造函数中
总和是25
在超类的构造函数中
在子类的构造函数中
总和是29
原文由 aman_novice 发布,翻译遵循 CC BY-SA 4.0 许可协议
因为它将确保在调用构造函数时,它可以依赖于初始化其超类中的所有字段。
参见 此处 的 3.4.4