接口与抽象类区别

抽象类:往往用来表征我们对问题领域进行分析、设计中得出的抽象概念,是对一系列看上去不同,但本质上相同的具体概念的抽象。(面向对象的概念中,所有的对象都是通过类来描绘的。但是,并不是所有的类都是用来描绘对象的,如果一个类中没有包含足够的信息来描绘一个具体的对象,这样的类就是抽象类)

作用:主要用来进行类型隐藏。

接口的定义跟抽象类相似,也可以说接口就是一个特殊的抽象类。

它们的区别:

1、abstract class在C#中表示的是一种继承关系,一个类只能使用一次继承关系。但是一个类却可以实现多个interface。

2、在abstract class中可以有自己的数据成员,也可以有非abstract的成员方法,而在interface中,可以定义方法、属性、索引和事件,所有的成员方法都是abstract的。

3、abstract class和interface所反映出的设计理念不同。其实abstract class表示的是‘is-a’关系,interface表示的是‘like-a’。

4、实现抽象类和接口的类必须实现其中的所有方法。抽象类中可以有非抽象方法。接口中不能有实现方法。

5、抽象类中的变量默认是private型,其值可以在子类中重新定义,也可以重新赋值。

6、接口中的方法默认都是public,abstract类型的,并且不允许成员加任何访问修饰符。

abstract class 成员的默认访问修饰是什么:

接口与抽象类区别

接口与抽象类区别

很明显,方法默认的修饰是private,可以根据需要加访问修饰符。

一笔带过:委托跟接口的区别就是,委托只能包含属性,索引,方法,而不能包含事件。