接口和抽象類的區別和聯繫

  • 接口

  (1) 接口不能被實例化
  (2) 接口只能包含方法聲明
  (3) 接口的成員包括方法、屬性、索引器、事件
  (4) 接口中不能包含常量、字段(域)、構造函數、析構函數、靜態成員
  (5) 接口中的全部成員默認爲public,所以接口中不能有private修飾符
  (6) 派生類必須實現接口的全部成員
  (7) 一個類能夠直接實現多個接口,接口之間用逗號隔開
  (8) 一個接口能夠有多個父接口,實現該接口的類必須實現全部父接口中的全部成員
  •  抽象類

  (1) 抽象方法只做聲明,而不包含實現,能夠當作是沒有實現體的虛方法
  (2) 抽象類不能被實例化
  (3) 抽象類能夠但不是必須有抽象屬性和抽象方法,可是一旦有了抽象方法,就必定要把這個類聲明爲抽象類
  (4) 具體派生類必須覆蓋基類的抽象方法
  (5) 抽象派生類能夠覆蓋基類的抽象方法,也能夠不覆蓋。若是不覆蓋,則其具體派生類必須覆蓋它們。
  •  相同點

  (1) 均可以被繼承
  (2) 都不能被實例化
  (3) 均可以包含方法聲明
  (4) 派生類必須實現未實現的方法
  •  區別

   1.接口規定了你能作什麼,而抽象類定義了你是什麼。函數

   2. ① 飛機會飛,鳥會飛,他們都繼承了同一個接口「飛」;可是F22屬於飛機抽象類,鴿子屬於鳥抽象類。繼承

    ② 就像鐵門木門都是門(抽象類),你想要個門我給不了(不能實例化),但我能夠給你個具體的鐵門或木門(多態);並且只能是門,你不能說它是窗(單繼承);一個門能夠有鎖(接口)也能夠有門鈴(多實現)。 門(抽象類)定義了你是什麼,接口(鎖)規定了你能作什麼(一個接口最好只能作一件事,你不能要求鎖也能發出聲音吧(接口污染))。索引

相關文章
相關標籤/搜索