这是一个简短的问题,我希望有人可以给出解释。
当一个类的构造函数没有使用" super显式调用其超类的构造函数时会发生什么。"同样,哪些情况会导致编译时出错?提前谢谢!
答案 0 :(得分:3)
它隐式调用超类的默认构造函数(如果存在),否则会导致编译器错误
答案 1 :(得分:0)
当类的构造函数没有使用“superclass
显式调用其super
的构造函数时”。
子类中的constrcutor将default call
no arg default constrcutor
级super
。
因此调用super class no arg default constructor.
如果super
类没有no arg default constructor
那么它肯定会抛出编译时错误。
让我们看一下场景
class A{
}
class B extends A{
}
这内部变为
class A{
A(){
}
}
class B extends A{
B(){
super();
}
}
这绝对可以作为A类中的默认构造函数没有错误。
现在如果A没有默认构造函数(当我们编写自己的构造函数时发生)
class A{
A(int a){
}
}
class B extends A{
}
这将是内部的
class A{
A(int a){
}
}
class B extends A{
B(){
super();//compile time error as no default constructor in class A
}
}
解决方案
1)在A类中明确定义默认的constrcutor
或
2)从B中调用A的参数化构造函数,如int x =0; super(x);
明确地