java程式設計的邏輯讀書筆記——第五章
阿新 • • 發佈:2018-11-28
類的擴充套件
介面和抽象類
- interface 宣告介面
- implements實現介面
- 介面約定的是功能,而不是具體實現
- 介面中方法的預設修飾符為public abstract
- 介面中變數的預設修飾符為public static final
- 介面不能建立物件,但是介面可以作為引用型別,將其實現類的物件賦值給介面
- 一個類可以實現多個介面
- 一個介面可以繼承多個介面
- 一個類可以同時實現介面並且繼承類,關鍵字extends要放在implements前面
- JAVA8允許在介面中存在靜態方法和預設方法(default修飾)(JAVA9規定這兩種方法都可以使用private修飾)
- 實現介面必須實現其所有的抽象方法,因為普通類中不能包含抽象方法
- 繼承抽象類必須實現抽象類的所有抽象方法,除非該類也是抽象方法
- 抽象類中可以包含具體方法和例項變數,他和具體類的區別是,抽象類不能建立物件
- 介面定義能力,抽象類提供預設實現,實現全部或者部分方法,減少子類要實現的方法。
- 抽象類可以實現介面中的方法,也可以不實現。
- 抽象類和介面中的方法,最終都必須進行實現
內部類
- 靜態內部類
1)靜態內部類可以有靜態變數和例項變數,靜態方法和例項方法,構造方法。靜態內部類只能可以訪問外部類的靜態變數和靜態方法。
2)為什麼不能訪問例項變數和方法,因為靜態內部類會隨著類的載入而載入,當他呼叫例項方法的時候,例項方法可能還沒有進行初始化,所以不能
3)public的靜態內部類可以被其他類使用。 外部類.靜態內部類
4)靜態內部類最終會生成: 外部類$靜態內部類 - 成員內部類
1)成員內部類建立需要通過外部類物件來建立
Base b = new Base();
b.Inner i = b.new Inner();
2)成員內部類和外部類物件繫結,不能訪問外部類靜態變數和靜態方法,因為靜態變數和靜態方法和類本身繫結,是獨立使用。 - 方法內部類
1)方法內部類只能再該方法中使用
2)方法是例項方法,方法內部類可以訪問外部類的靜態方法和變數,例項方法和變數
3)方法內部類還可以訪問方法的引數以及區域性變數,只不過得用final修飾,再java8之後,可以不用final修飾,不過該變數不能唄重新賦值,否則會編譯出錯
4)方法內部類的實現原理
將方法內部類單獨分離成一個類,將使用到的方法中的引數作為該類的成員變數,將外部類物件作為該類的成員變數,使用到的外部類變數在外部類中建立方法來獲取,建立帶參的構造方法;把方法中的操作進行封裝,存在於該類中;再方法中宣告並呼叫該類中的方法。 - 匿名內部類
列舉
public enum Size{
SMALL, MEDIUM, LARGE
}
public enum Size{
SMALL("S", "小號");
MEDIUM("M", "中號");
LARGE("L", "大號");
private String abbr;
private String title;
//getter setter方法省略
}
- int ordinal() //表示列舉在宣告時的順序
- valueOf(String str) //返回字串對應的列舉值
- toString() //返回當前列舉對應的字串