找不到符号符号:构造函数A()位置:类A.

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)

Roh*_*ain 9

你已宣布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.你们都很好.