如何在实现接口的每个对象上设置属性的默认值

本文关键字:对象 设置 默认值 属性 实现 接口 | 更新日期: 2023-09-27 18:16:29

在我的IVehicle界面上有一个名为Color的属性。如果我想让每辆实现这个界面的车都有一个默认颜色"红色",我该怎么做呢?这里需要再加一层吗?

public interface IVehicle
{
    string Color { get; set; }
    void Go();        
    void Stop();
}
public class Bmw : IVehicle
{
    #region IVehicle Members
    public string Color
    {
        get
        {
            throw new NotImplementedException();
        }
        set
        {
            throw new NotImplementedException();
        }
    }
    public void Go()
    {
    }
    public void Stop()
    {
    }
    #endregion
}

如何在实现接口的每个对象上设置属性的默认值

如果我想让所有从这个界面继承的车辆都有一个默认的"红色"颜色,我该怎么做呢?

这实际上是一个实现细节,所以它不是接口的一部分。接口不能规定类如何实现它——只能规定必须实现哪些成员。

如果您想要这种类型的控件,您可能希望使用abstract class而不是接口。Vehicle基类可以使用Colors.Red设置默认实现。

你不是从接口"继承",而是"实现"它。默认颜色将是实现的一部分。所以,是的,你需要"另一个层次",它可以是一个抽象的或具体的类,你的子类继承。

注意:您可以实现多个接口,但只能从一个类继承。

如果没有特定的原因使用接口而不是抽象类(例如实现它的东西已经有一个基类),那么抽象类是一种选择。您还需要确保将该属性声明为virtual,否则它将无法被继承类覆盖。