可以解释输出是如何产生的吗?

时间:2013-03-19 19:28:50

标签: java inheritance constructor

public class A {
  public A(){
    System.out.println("A created");        
  }
  public static void main(String[] args) {
    new B();
  }
}

class B extends A{
    public B(){
        System.out.println("B created");
    }       
}

上述程序的输出将是

A created

B created

我无法理解如何调用构造函数A()。在B()中没有调用super。但仍然调用A()。

2 个答案:

答案 0 :(得分:7)

当类B扩展类A时,它默认会调用构造函数A( )

这就是程序在A created之前打印B created的原因。

答案 1 :(得分:2)

在子类中,会自动调用super()以确保正确构造对象。