1. 程式人生 > >java程式設計的邏輯讀書筆記——第五章

java程式設計的邏輯讀書筆記——第五章

類的擴充套件

介面和抽象類

  1. interface 宣告介面
  2. implements實現介面
  3. 介面約定的是功能,而不是具體實現
  4. 介面中方法的預設修飾符為public abstract
  5. 介面中變數的預設修飾符為public static final
  6. 介面不能建立物件,但是介面可以作為引用型別,將其實現類的物件賦值給介面
  7. 一個類可以實現多個介面
  8. 一個介面可以繼承多個介面
  9. 一個類可以同時實現介面並且繼承類,關鍵字extends要放在implements前面
  10. JAVA8允許在介面中存在靜態方法和預設方法(default修飾)(JAVA9規定這兩種方法都可以使用private修飾)
  11. 實現介面必須實現其所有的抽象方法,因為普通類中不能包含抽象方法
  12. 繼承抽象類必須實現抽象類的所有抽象方法,除非該類也是抽象方法
  13. 抽象類中可以包含具體方法和例項變數,他和具體類的區別是,抽象類不能建立物件
  14. 介面定義能力,抽象類提供預設實現,實現全部或者部分方法,減少子類要實現的方法。
  15. 抽象類可以實現介面中的方法,也可以不實現。
  16. 抽象類和介面中的方法,最終都必須進行實現

內部類

  1. 靜態內部類
    1)靜態內部類可以有靜態變數和例項變數,靜態方法和例項方法,構造方法。靜態內部類只能可以訪問外部類的靜態變數和靜態方法。
    2)為什麼不能訪問例項變數和方法,因為靜態內部類會隨著類的載入而載入,當他呼叫例項方法的時候,例項方法可能還沒有進行初始化,所以不能
    3)public的靜態內部類可以被其他類使用。 外部類.靜態內部類
    4)靜態內部類最終會生成: 外部類$靜態內部類
  2. 成員內部類
    1)成員內部類建立需要通過外部類物件來建立
    Base b = new Base();
    b.Inner i = b.new Inner();
    2)成員內部類和外部類物件繫結,不能訪問外部類靜態變數和靜態方法,因為靜態變數和靜態方法和類本身繫結,是獨立使用。
  3. 方法內部類
    1)方法內部類只能再該方法中使用
    2)方法是例項方法,方法內部類可以訪問外部類的靜態方法和變數,例項方法和變數
    3)方法內部類還可以訪問方法的引數以及區域性變數,只不過得用final修飾,再java8之後,可以不用final修飾,不過該變數不能唄重新賦值,否則會編譯出錯
    4)方法內部類的實現原理
    將方法內部類單獨分離成一個類,將使用到的方法中的引數作為該類的成員變數,將外部類物件作為該類的成員變數,使用到的外部類變數在外部類中建立方法來獲取,建立帶參的構造方法;把方法中的操作進行封裝,存在於該類中;再方法中宣告並呼叫該類中的方法。
  4. 匿名內部類

列舉

public enum Size{
	SMALL, MEDIUM, LARGE
}
public enum Size{
	SMALL("S", "小號");
	MEDIUM("M", "中號");
	LARGE("L", "大號");
	private String abbr;
	private String title;
	//getter setter方法省略
}
  1. int ordinal() //表示列舉在宣告時的順序
  2. valueOf(String str) //返回字串對應的列舉值
  3. toString() //返回當前列舉對應的字串