class Abc
{
public Abc()
{
System.out.println("constructor A");
}
}
class Bb extends Abc
{
public Bb()
{
super(); // Calls Abc()
System.out.println("constructor B");
}
}
public class X
{
public static void main(String args[])
{
Bb b = new Bb();
}
}
答案是:
Constructor A
Constructor B
谁能说出这背后的原因?
调用派生类的构造函数时,必须首先构造其超类。如果未明确完成此操作(通过指定super
,带有或不带有任何参数),则将使用no-arguments构造函数隐式完成此操作。换句话说,您的代码等效于:
class Abc {
public Abc() {
System.out.println("constructor A");
}
}
class Bb extends Abc {
public Bb() {
super(); // Calls Abc()
System.out.println("constructor B");
}
}
public class X {
public static void main(String args[]) {
Bb b = new Bb();
}
}
一旦以这种方式表达,就很容易看出为什么"constructor A"
要印刷,然后印刷"constructor B"
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句