[英]java constructor in super classes
以下代碼是一個測試程序。 為什么我不能在此程序中使用A(int a)?
public class A {
int a;
void meth(int b) {
a+=b;
}
A(int a) {
this.a=a;
}
}
class B extends A {
int a;
void meh2(int b) {
a+=b;
}
}
為什么不能將參數傳遞給構造函數? 是什么原因 Netbeans錯誤消息:
tma1.A類中的構造函數A不能應用於給定類型; 必需:發現整數:無參數原因:實際和形式參數列表的長度不同
在類B中,您需要構造函數。 如果您不能從B調用A,那只是因為您要擴展類A,所以您需要使用super,它引用了superclass。 例如,B可以是:
class B extends A {
B(int a) {
//You can put additional code here
// This calls the constructor of A
super(a);
//You can put additional code here
}
int a;
void meh2(int b) {
a+=b;
}
}
否則,如果您沒有在代碼中省略某些內容,則需要為B類中的變量a分配一些內容
除非類具有已定義的構造函數,否則它將自動具有僅調用super()
的無參數構造函數。
您的編譯器發出的抱怨似乎是:“您的無參數構造函數(您看不到)正在調用不存在的父無參數構造函數。”
類A
沒有一個無參數的構造函數,因為沒有定義的另一個(這樣Java沒有創建一個)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.