Kri*_*hna 3 java inheritance constructor class object
class A {
A(int i){
System.out.println("A(int)");
}
}
class B1 extends A{
public static void main(String args[]){
A ob=new A(2);
}
}
Run Code Online (Sandbox Code Playgroud)
你已宣布1 -精氨酸 constructor在class A.因此,编译器不提供默认的0-arg constructor.
现在,class B1你还没有定义任何constructor,所以编译器在该类中添加一个默认的 0-arg constructor,如下所示:
public B1() {
super();
}
Run Code Online (Sandbox Code Playgroud)
正如你所看到的,编译器增加了一个super()调用来调用0-arg constructor的super class,这就是class A,在这种情况下.
现在,因为你的class A,没有任何0-arg constructor,因此错误.
所以,你可以0-arg constructor在你的班级A中添加一个: -
public A() {
}
Run Code Online (Sandbox Code Playgroud)
这将解决问题.
或者,添加0-arg constructor在您的class B1明确,以及添加super()调用1-arg constructor的class A: -
public B1() {
super(0); // Or any value
}
Run Code Online (Sandbox Code Playgroud)
但是,在第二个解决方案的问题将是,在你的每一个构造函数class B1,你会调用1-arg constructor的class A明确.一旦错过了一个,您将compiler立即收到错误.
所以,我建议你去1st option.添加0-arg constructor在class A.你们都很好.