我从阅读的有关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();
}
}
我不明白为什么super()在这里?即使删除super(),我也会得到相同的结果(先打印A,然后打印B).据我了解,当我初始化子类时,父类先于其初始化.那么为什么要使用super()?
解决方法:
在这种情况下,您无需调用super();,因为Java会将调用插入到super();中.如果您未显式调用它,则在构造函数中隐式调用它. (Java Tutorial link).
仅在您要在超类中调用另一个非默认构造函数的其他情况下才有必要,例如:
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");
}
}
标签:java,super
来源: https://codeday.me/bug/20191012/1899201.html