C#接口和抽象类之间异同?

接口

简单说就是一系列抽象方法的集合,如果一个类实现了某个接口,即继承了这个接口的所有抽象方法,则该类必须实现这些抽象方法。

抽象类

首先,与接口不同的是,抽象类不能直接创建实例对象,抽象类中的抽象方法只能在其子类中实现(即通过extends的方式而不是implements),因此可以把抽象类看作是提供给继承的子类的一个模板。抽象类本身没有任何用处,它是为了继承而存在的,创建一个抽象类而不去继承它等于是做了无用功。

相同点

1、都可以被继承,

2、都不能被实例化,

3、都包含抽象方法,

4、都可以实现程序的多态性

不同点

1、接口不能定义静态方法,抽象类可以,

2、接口中的数据成员只能是常量,

3、抽象类可以定义非抽象方法,而接口中所有的方法都是抽象的


版权声明:本文为weixin_44024993原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。