好
頻道需要你的支持,謝謝你成為我們的會員(加入會員)
影片1 用生活化的範例讓你搞懂什麼是 Inner Class 並了解它的使用時機
影片2 用生活化的範例讓你搞懂什麼是 Static Nested Class 與 Local Class 並了解它們的使用時機
影片4 開發模型(Design Pattern) - Builder Pattern 的必要性與開發流程
影片5 enum 有用到嗎?老實說,不會用就虧大了=> enum 的使用時機與方式
一、巢狀類別 (Nested Classes)
Java語言允許在類別中宣告類別,宣告在類別中的類別稱之為:巢狀類別。使用巢狀類別的原因包括:
l 邏輯性
如果一個類別,只針對另一個類別有用。此時,把這個類別宣告為另一個類別的內部類別,以輔助類別的形態存在,是合乎邏輯的。也可以使程式碼更為精簡。
l 隱密性
如果有一個類別,需要絕對的安全性。把它隱藏在另一個類別中。讓它對外界而言,是隱形的。是一個增加安全性的做法。
l 可讀性
它可以讓程式碼更容易讀以及更好維護。在外部類別中嵌入內部類別可以使程式碼更接近使用它的位置。
1.
Inner class
物件成員內部類別,可以存取其他成員。不可以宣告非
final 的 static 欄位與 static 方法。
2.
Static Nested Class
類別成員巢狀類別。不可以存取非
static 成員。
3.
Local Class
區域內部類別,可以宣告在任何區塊中。需注意敍述的順序。不可以修改區域變數或參數的值。
二、匿名類別
讓你可以寫出更簡潔的程式碼,它讓我們同時宣告並實體化一個類別。當我們需要一個類別,它只使用一次的時候也就是只需要一個物件的時候,可以撰寫匿名類別。
匿名類別可以是物件成員內部類別,也可以是區域內部類別。如果是區域內部類別,就必須遵守區域內部類別的規定,不可以修改區域變數或參數的值。
匿名類別是指定類別的子類別或指定介面的實作類別。類別中可以新增自己的成員或 override 父類別中的成員。
匿名類別的敍述不是宣告敍述,是建立物件的運算式。
匿名類別是多型的應用。
1.
必須有
i.
new
ii.
指定要繼承的類別或要實作的界面
iii.
一組小括號,括號中可以置入指定類別的建構方法要求的參數值;若是界面則保持空括號。
iv.
body
2.
可以有
i.
欄位
ii.
方法
iii.
初始化區塊
iv.
內部類別
3.
不可以有
i. 建構方法
任務 :應用巢狀類別,實作開發模型(Design pattern) => Builder Pattern
提供型別安全的列舉物件。
public static final 欄位使用時必須撰寫範圍檢查的程式碼,用來防止錯誤發生。但是,這畢竟屬於執行時期的範圍檢查。在某一些狀況之下,設計師希望能夠在編譯時期就確定程式碼不會產生錯誤,無論如何都能夠得到期望中的結果。針對這樣的需求,Java提供 enum。它可以讓程式設計師撰寫程式碼進行編譯時期的範圍檢查。
1.
宣告
i.
所有變數都是參照到本類別物件的參考變數。
ii.
所有變數都是public static final。
iii.
建構方法
建構方法不可以是
protected 和 public。
iv.
若宣告在類別中預設為靜態內部類別 (static nested class)。
2.
常用方法
i.
values
呼叫此方法可以取得一個陣列,包含所有元素物件。
ii.
ordinal
呼叫此方法得到元素物件的代號。