c#interface,abstract class,force inherited class not abstract class

时间:2017-06-23 12:22:54

标签: c# .net oop inheritance interface

是否有继承基类的成员,该基类具有实现该接口的接口。

一些界面

public interface ICanWork
{
     void DoSomething();
}

一些抽象类

public abstract Class MyBase : ICanWork
{
     // I do not want to implement the ICanWork but instead want the derived class which inherit it
}

我继承基类的类

public class House : MyBase
{
     // i want the compiler to know that it needs to implement ICanWork 
}

这不像我期望的那样有效。

通过将接口放在类上继承基类来实现这一目的的唯一方法是什么?

e.g。

public class House : MyBase, ICanWork
{

}

有用的建议吗?

1 个答案:

答案 0 :(得分:8)

在该类中实现实现接口的接口,即使你的类是abstract。但是,您也可以使用abstract实现该方法,这会强制所有派生类实现它:

public abstract Class MyBase : ICanWork
{
     public abstract void DoSomething();
}

当您现在定义派生asbtract基类的类时,您还必须实现该方法:

public class House : MyBase
{
    public override void DoSomething() { ... }
}

来自MSDN

  

与非抽象类一样,抽象类必须提供   实现了所列接口的所有成员   类的基类列表。但是,抽象类是   允许将接口方法映射到抽象方法