[英]cannot find symbol symbol : constructor A() location: class A
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 constructor
。
現在,在class B1
,您還沒有定義任何constructor
,因此編譯器在該類中添加了一個默認的 0-arg constructor
,如下所示:
public B1() {
super();
}
正如您所看到的, 編譯器添加了一個super()
調用來調用super class
的0-arg constructor
,在本例中是class A
。
現在,因為你的class A
,沒有任何0-arg constructor
,因此出錯。
所以,你可以在你的類A中添加一個0-arg constructor
: -
public A() {
}
這將解決問題。
或者,在class B1
顯式添加0-arg constructor
函數,並向class A
的1-arg constructor
添加super()
調用: -
public B1() {
super(0); // Or any value
}
但是,第二個解決方案中的問題是,從class B1
每個構造函數中,您必須顯式調用class A
的1-arg constructor
函數。 一旦錯過了一個,您將立即收到compiler
錯誤。
所以,我建議1st option
。 在class A
添加一個0-arg constructor
。 你們都很好。
基本上你需要在子類中定義一個構造函數,如下所示:
class B1 extends A{
public B1(int x){
super(x);
}
...
}
要么
在A類中添加默認構造函數。
class A {
A(){
}
A(int i){
System.out.println("A(int)");
}
}
class B1 extends A{
public static void main(String args[]){
A ob=new A(2);
}
}
在這種情況下你必須給出默認的構造函數,因為A(int i)隱藏它,當你創建類的對象時它顯示錯誤。上面我的代碼工作正常。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.