我的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
}
答案 0 :(得分:8)
如果我希望从该界面继承的每辆车都有默认颜色“红色”,我怎么能实现这个目标?
这实际上是一个实现细节,所以它不是界面的一部分。接口不能指定类如何实现它 - 只需要实现成员。
如果您想要这种类型的控件,您可能希望使用abstract class
而不是接口。 Vehicle
基类可以使用Colors.Red
设置默认实现。
答案 1 :(得分:3)
您没有从界面“继承”,您“实施”它。默认颜色将是实现的一部分。所以是的,你需要“另一个级别”它可能是你的子类继承的abastract或具体类。
注意:您可以实现许多接口,但只能从一个类继承。
答案 2 :(得分:0)
如果你没有特定的理由在抽象类上使用接口(例如实现它的东西已经有了基类),那么抽象类就是可行的方法。您还需要确保将该属性声明为虚拟,否则它将无法被继承类覆盖。