簡體   English   中英

我可以要求孩子初始化在其父類中聲明的變量嗎?

[英]Can I require that a child initialize variables declared in its parent class?

我有一個抽象類Animal,該類具有從該類繼承變量的類。 例如,一個Name字符串將保存該類代表的動物的名稱。

我的問題是,我可以要求在孩子的構造函數中初始化這些變量嗎? 我想確保Cat.cs,Dog.cs等實際存儲名稱。 我相信我可以創建一個虛擬的Start()或Awake()方法,但這只會確保Name字符串中包含某些內容,而不是動物的實際名稱。

如果將此構造函數添加到Animal基類中:

public abstract class Animal
{
    protected Animal(string name)
    {
        this.Name = name;
    }

    public string Name { get; set; }
}

從它派生的任何類型都需要向構造函數提供該參數:

public class Dog : Animal
{
    public Dog(string name) : base(name)
    {
    }
}

參見MSDN

這幾乎與haim770完全相同,但顯示您也可以具有默認構造函數(另一件事我將在底部指出)

public abstract class Animal
{
    public string Name { get; private set; }

    public Animal(string name)
    {
        Name = name;
    }
}

public class Dog : Animal
{
    public Dog()
        : base("Rover")
    {

    }

    public Dog(string name)
        : base(name)
    {

    }
}

唯一需要注意的是, Animal的構造函數未聲明為protected 為什么? 因為這並不重要。 因為Animal是抽象類,所以無論如何都不能創建它的新實例,因此在這種情況下,將構造函數public是等效於使其protected

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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