[英]c# interface, abstract class, force inherited class not abstract class
是否有繼承具有接口的基類來實現該接口的成員。
一些界面
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
}
這沒有像我期望的那樣起作用。
通過將接口放在類上繼承基類來實現這一目的的唯一方法是什么?
例如
public class House : MyBase, ICanWork
{
}
任何有用的建議?
您必須在該類中實現實現接口的接口,即使您的類是abstract
。 但是,您可以使該方法的實現也是abstract
,這會強制所有派生類實現它:
public abstract Class MyBase : ICanWork
{
public abstract void DoSomething();
}
當您現在定義派生asbtract基類的類時,您還必須實現該方法:
public class House : MyBase
{
public override void DoSomething() { ... }
}
來自MSDN :
與非抽象類一樣,抽象類必須提供類的基類列表中列出的接口的所有成員的實現。 但是,允許抽象類將接口方法映射到抽象方法
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.