抽象类没有实现接口

9 c# inheritance interface

我有一个接口,所以类编写器被迫实现某些方法.我还想允许一些默认的实现方法,所以我创建了一个抽象类.问题是所有类都继承自基类,因此我有一些辅助函数.

我试着写:IClass in with abstract base但是我得到一个错误,基础没有实现接口.当然,因为我想要这个摘要并让用户实现这些方法.作为返回对象,如果我使用base我无法调用接口类方法.如果我使用该接口,我无法访问基本方法.

我如何制作它以便我可以拥有这些帮助类并强制用户实现某些方法?

Mau*_*Mau 15

确保基类中的方法与接口具有相同的名称,并且它们是公共的.另外,将它们设置为虚拟,以便子类可以覆盖它们而不隐藏它们.

interface IInterface {
   void Do();
   void Go();
}

abstract class ClassBase : IInterface {

    public virtual void Do() {
         // Default behaviour
    }

    public abstract void Go();  // No default behaviour

}

class ConcreteClass : ClassBase {

    public override void Do() {
         // Specialised behaviour
    }

    public override void Go() {
        // ...
    }

}
Run Code Online (Sandbox Code Playgroud)


Fem*_*ref 6

将接口方法移动到抽象类中,并将它们声明为抽象类.通过这种方式,派生类被迫实现它们.如果您需要默认行为,请使用抽象类,如果您只想修复签名,请使用接口.这两个概念都不混合.