我在一本书中看到了一个关于java的例子:
public class A{
public A(){
System.out.println("A");
}
}
public class B extends A{
public B(){
super();
System.out.println("B");
}
public static void main(String[] args){
B b = new B();
}
}
Run Code Online (Sandbox Code Playgroud)
我不明白为什么要super()在这里?即使我删除super(),我也会得到相同的结果(A将被打印,然后是B).据我所知,当我初始化子类时,父类在它之前初始化.为什么要使用super()?
rge*_*man 13
在这种特殊情况下,您不需要调用super();,因为super();如果您没有显式调用它,Java将在构造函数中隐式插入调用. (Java Tutorial链接).
只有在其他情况下才需要调用超类中的另一个非默认构造函数,例如:
public class A{
public A(String s){
System.out.println("A");
}
}
public class B extends A{
public B(String s){
super(s);
System.out.println("B");
}
}
Run Code Online (Sandbox Code Playgroud)