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

时间:2011-11-30 19:30:08

标签: c# oop interface

我的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
}

3 个答案:

答案 0 :(得分:8)

  

如果我希望从该界面继承的每辆车都有默认颜色“红色”,我怎么能实现这个目标?

这实际上是一个实现细节,所以它不是界面的一部分。接口不能指定类如何实现它 - 只需要实现成员。

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

答案 1 :(得分:3)

您没有从界面“继承”,您“实施”它。默认颜色将是实现的一部分。所以是的,你需要“另一个级别”它可能是你的子类继承的abastract或具体类。

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

答案 2 :(得分:0)

如果你没有特定的理由在抽象类上使用接口(例如实现它的东西已经有了基类),那么抽象类就是可行的方法。您还需要确保将该属性声明为虚拟,否则它将无法被继承类覆盖。