簡體   English   中英

Java繼承構造函數問題

[英]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);

因為超級構造函數有四個參數,而您只傳遞了三個。

由於您沒有Childname ,因此可以傳遞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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM