Java編程思想(第九章接口)學習筆記

第九章:接口

一、抽象類與抽象方法
  • 抽象方法:只有方法聲明沒有方法體:abstract void f();
  • 抽象類:包含抽象方法的類一定是抽象類,但是抽象類可以不包含抽象方法
  • 不包含抽象方法的抽象類:不允許被實例化,可以用它來編寫工具類。
  • 創建抽象方法與抽象類,可以很方便的讓我們將公共方法沿着繼承層次向上移動
二、接口
  1. 它不僅僅只是一個徹底的抽象類,雖然內部全部是抽象方法(必須是public修飾),但是沒有任何與接口相關的存儲。
  2. 它可以包含成員變量,但這些都是隱式的由static+final修飾(即靜態常量),這些變量不是接口的一部分,它們的值存儲在該接口的靜態存儲區域內
  3. 接口可以多繼承,但是需要儘量避免方法重名,否則會報錯
  4. 嵌套接口:實現某接口,不必實現其全部的內部嵌套接口。未實際遇到過,無法理解其用途。
三、抽象類與接口的抉擇
  • 不需要成員變量以及具體方法,則選擇接口;否則選擇抽象類,因爲它可以讓類的抽象性變得明確。
  • 抽象類的侷限性在於單繼承(只能作用於繼承關係中),而接口的多繼承+多實現特性則給我們提供了更好的拓展性(策略模式,適配器模式)。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章