1.抽象類確定能夠實現接口;
2.這不是有沒有意義的事情,是一種思想,當你本身寫的類想用接口中個別方法的時候(注意不是全部的方法),那麼你就能夠用一個抽象類先實現這個接口(方法體中爲空),而後再用你的類繼承這個抽象類,這樣就能夠達到你的目的了,若是你直接用類實現接口,那是全部方法都必須實現的; 編程
1.接口能夠多繼承,抽象類不能實現多繼承。設計模式
2.接口只能定義抽象規則,抽象類既能定義抽象規則也能夠提供已經實現的成員。spa
3.接口是一組行爲規範,抽象類是一個不徹底的類,着重於族的概念。設計
4.接口支持回調,抽象類不能實現回調,由於繼承不支持。對象
5.接口只包含方法,屬性,索引器,事件的簽名,但不能定義字段和包含實現的方法,抽象類能夠定義屬性,字段,包含有實現的方法。繼承
6.接口能夠做用於值類型和引用類型,抽象類只能做用於引用類型(如:Struct只能繼承接口)索引
7.抽象類應主要用於關係密切的對象,而接口則是適合爲不相關的類提供通用功能。接口
8.接口着重於Can——Do關係類型,抽象類則偏重於IS——A式關係事件
9.接口多定義對象的行爲,抽象類多定義對象的屬性面向對象編程
10.若是要設計小而簡練的功能塊,則使用接口,若是要設計大的功能單元,則使用抽象類。
11.接口對應的是面向對象編程思想的重要原則:面向接口編程,
抽象類對應的則是設計模式的精髓:面向抽象編程
PS:抽象類的子類繼承能夠推遲,而接口不能夠。