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);
}
}
最佳答案
你在 class A
中声明了一个 1-arg constructor
。因此,编译器 不提供默认的 0-arg 构造函数
。
现在,在 B1 类
中,您还没有定义任何构造函数
,所以编译器添加了一个默认 <该类中的 em>0-arg constructor
,如下所示:-
public B1() {
super();
}
如您所见,Compiler 添加了一个 super()
调用来调用 父类(super class)的
,在本例中是 0-arg 构造函数
A 类
。
现在,由于您的 class A
没有任何 0-arg constructor
,因此出现错误。
因此,要么您可以在类 A 中添加一个0-arg 构造函数
:-
public A() {
}
这将解决问题。
或者,在您的 class B1
中显式添加一个 0-arg constructor
,并添加一个 super()
调用 A 类
的 1-arg 构造函数
:-
public B1() {
super(0); // Or any value
}
但是,第二个解决方案中的问题是,从您的 B1 类
中的每个构造函数,您必须调用 的
显式。一旦遗漏一个,就会立即出现1-arg 构造函数
>A 类编译器
错误。
因此,我建议使用第一个选项
。在 class A
中添加一个 0-arg constructor
。你们都很好。
关于java - 找不到符号符号 : constructor A() location: class A,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13541481/