[英]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.