1.接口可以多繼承,抽象類不能實現多繼承。
2.接口只能定義抽象規則,抽象類既能定義抽象規則也可以提供已經實現的成員。
3.接口是一組行為規范,抽象類是一個不完全的類,着重於族的概念。
4.接口支持回調,抽象類不能實現回調,因為繼承不支持。
5.接口只包含方法,屬性,索引器,事件的簽名,但不能定義字段和包含實現的方法,抽象類可以定義屬性,字段,包含有實現的方法。
6.接口可以作用於值類型和引用類型,抽象類只能作用於引用類型(如:Struct只能繼承接口)
7.抽象類應主要用於關系密切的對象,而接口則是適合為不相關的類提供通用功能。
8.接口着重於Can——Do關系類型,抽象類則偏重於IS——A式關系
9.接口多定義對象的行為,抽象類多定義對象的屬性
10.如果要設計小而簡練的功能塊,則使用接口,如果要設計大的功能單元,則使用抽象類。
11.接口對應的是面向對象編程思想的重要原則:面向接口編程,
抽象類對應的則是設計模式的精髓:面向抽象編程
PS:抽象類的子類繼承可以推遲,而接口不可以。