踏入 Java 世界,首先要建立正確的物件導向思維。OOP(Object-Oriented Programming)的精髓在於「關注介面而非實作」——就像購買電腦時,你只在意電源供應器能否提供電力,而不需了解其內部電路結構。程式由擁有屬性(狀態)與行為(方法)的物件組成,物件間透過方法呼叫溝通,封裝機制將資料與操作綁定,並對外隱藏實作細節,極大提升程式碼復用率。
類別是建構物件的模板。從類別實例化出的物件稱為「實例」。每個物件擁有三大特性:
這三者相互影響,共同定義物件的完整語意。
類別之間存在三種核心關係:
建構子是特殊方法,同名於類別、無回傳值、配合 new 運算子使用。一個類別可擁有多個建構子(多載),參數個數可為零或多個。例如:
Date happyDay = new Date(); // 建立並初始化為當前時間
注意:new 回傳的是物件參考(引用),而非物件本身;變數與物件是兩個不同概念。
當同一類別中出現同名但參數列不同的方法,即發生多載。編譯器會根據引數類型自動選擇正確版本。為組織大型專案,Java 引入套件機制,標準函式庫分為 java.lang、java.util、java.net 等層級套件,所有套件皆位於 java 與 javax 命名空間下。
繼承允許在既有類別基礎上建立新類別,復用父類別欄位與方法,同時新增專屬功能。語法為 class Child extends Parent,完美體現 is-a 關係。Java 採單一繼承,所有類別隱含繼承自 Object 根類別。多型讓物件變數能指向子類別實例,配合動態繫結,在執行期依實際物件類型決定呼叫哪個方法版本,使程式具備「不修改既有碼即可擴展」的彈性。
private、static、final 方法在編譯期確定(靜態繫結),其餘在執行期動態繫結,雖稍耗效能但換來擴展性equals() 用於判斷邏輯相等;toString() 回傳物件字串表達,幾乎所有類別都應覆寫以提供有意義的狀態資訊。
所有類別型別均可指派給 Object 變數,這是泛型思想的前身。ArrayList(java.util)提供動態陣列功能,自動調整容量,是取代傳統固定長度陣列的首選。