[英]Java Inheritance constructor issue
我基本上嘗試通過子構造函數發送父參數。
上級:
public class Animal
{
protected String name;
protected int age;
protected int weight;
protected int height;
public Animal(String Name,int Age,int Weight,int Height)
{
name = Name;
age = Age;
weight = Weight;
height = Height;
}
}
兒童:
public class Mammals extends Animal {
protected String haircolor;
public Mammals(String HairColor,int Age,int Weight,int Height)
{
super(Age,Weight,Height);
haircolor = HairColor;
}
public String Walk()
{
return "Walking...";
}
}
由於某種原因,我不斷收到錯誤消息。
錯誤來自
super(Age,Weight,Height);
因為超級構造函數有四個參數,而您只傳遞了三個。
由於您沒有Child
的name
,因此可以傳遞null
。
super(null, Age, Weight, Height);
另外,請考慮以下代碼約定 。
您沒有具有3個參數的父構造函數:super(Age,Weight,Height);
super(Age,Weight,Height);
這應該傳遞了四個參數,但是您傳遞了三個。 校驗!
您的基類Animal
具有一個帶有4個參數的參數化構造函數-
公共動物(字符串名稱,年齡,體重,身高)
但是從子類調用它時,您僅傳遞了3個參數-
超級(年齡,體重,身高);
在這里,您缺少基類構造函數的name
參數。 正如kocko所說,如果您不想將任何內容傳遞給name參數,則可以將null
傳遞給父類構造函數。
超級(空,年齡,體重,高度)
事實是,您必須將所有參數傳遞給構造函數或相應地使構造函數過載。
該錯誤可能已說明其背后的原因。 請仔細閱讀錯誤。 他們自己通常會解決語法錯誤。
而且,Java遵循camelCase
命名約定。 因此,您的參數名稱應該是名稱,年齡,體重,身高,hairColor等。它與您的問題無關,但將來肯定會對您有所幫助。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.