Pav*_*ari 2 .net c# abstract-class interface
众所周知,一个接口可以继承另一个接口,而接口只能包含方法签名.
interface A
{
void DoWorkA()
{ }
}
interface B : A
{
void DoWorkB()
{ }
}
Run Code Online (Sandbox Code Playgroud)
现在实现接口B的类需要提供两个函数体.
public class ABC : B
{
public void DoWorkB()
{
//do some work
}
public void DoWorkA()
{
//do some work
}
}
Run Code Online (Sandbox Code Playgroud)
那么为什么不能将接口继承为抽象类或普通类.
因此,如果接口继承了抽象类,则实现此接口的类需要提供抽象类的所有接口和抽象方法的实现.
为什么这是不可能的.
因为接口是语言定义的契约.它是用于描述合同的特定于语言的类型:因此您可以聚合不同的合同(从一个接口继承另一个接口),但合同本身不能扩展某些东西.
抽象类,可以包含实现:
//PERFECTLY VALID ABSTRACT CLASS DEFINITION
public abstract class A {
public abstract void Overridable(); //ABSRTACT
public void DoSomething() {
//METHOD BODY
}
}
Run Code Online (Sandbox Code Playgroud)
因此,从语言设计和OPP观点来看,从可能(通常)具有实现的东西继承接口是没有意义的.