When an abstract class implements an interface, it is required to also either define or declare the methods (as asked before):
public interface MyInterface { void Method(); } public abstract class MyAbstractClass : MyInterface { public abstract void Method(); // required, even though MyAbstractClass does not implement } public class MyClass : MyAbstractClass { public override void Method() { } } public interface MyInterface2 : MyInterface { // no need to declare Method() -- why can't abstract classes do the same for unimplemented methods? } What is the design rationale of the c# language to require the definition of abstract methods of abstract classes that implement interfaces? It seems completely redundant for an abstract class to be required to define a method that it does not implement (and to make it even worse, for the class that actually implements the method to have to mark the method as override). I see no reason why an abstract class could not behave like MyInterface2, which inherits from MyInterface but does not need to declare MyInterface's methods.