No, you cannot skip interface method implementation in any class which has this interface in its inheritance list. It does not matter if this class is abstract or not. If you think at this, perhaps you can understand why it is designed this way; in brief, it would defeat the purpose of interfaces.
At the same time, you can create an implementation of the interface method, represented by an abstract virtual method. This is a weird thing: from the standpoint of interface, this is an implementation of its method, but the method is abstract, so there is no an implementation. Anyway, it's more important to understand how it works and understand that this is quite a reasonable thing.
It would have reasonable purpose, you can later override the method. Practically, it may make sense if you, for example, can implement part of interface methods earlier, and part later. This is how it may look:
interface ISample {
void First
void Second();
}
abstract class Base : ISample {
public void First() {
}
public abstract void Second();
}
Or you can use explicit implementation which is often better, because it would allow to call interface members only through an interface reference and not through the implementing class instance:
abstract class Base : ISample {
void ISample.First() { }
abstract void ISample.Second();
}
And then you can later fully implement
ISample.Second
in one of derived classes, and finally get some non-abstract classes which could be instantiated. Then you can assign the class instance to a variable of an interface type and call interface methods/properties.
—SA