我可以要求子类初始化在其父类中声明的变量吗?

gre*_*ace 1 c#

我有一个抽象类Animal,其中的类继承了该类的变量.例如,Name字符串将包含该类所代表的动物的名称.

我的问题是,我可以要求在子构造函数中初始化这些变量吗?我想确保Cat.cs,Dog.cs等实际存储一个名称.我相信我可以创建一个虚拟的Start()或Awake()方法,但这只能确保Name字符串中包含某些内容,而不是动物的实际名称.

hai*_*770 7

如果您将此构造函数添加到基Animal类:

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

    public string Name { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

从它派生的任何类型都需要将该参数提供给构造函数:

public class Dog : Animal
{
    public Dog(string name) : base(name)
    {
    }
}
Run Code Online (Sandbox Code Playgroud)

请参阅MSDN