在學習設計模式的過程中,我發現自己對 Java 三大特性(封裝、繼承、多態)的理解不夠透徹,對抽象類、接口、泛型的應用場景也感到模糊。與其硬著頭皮繼續,不如回歸基礎,從 Java 對象機制開始夯實根基。
初學時老師常說「萬物皆對象」,這不僅是一句口號,更是物件導向思想的核心。準確來說,對象是一個自包含的實體,擁有可識別的特性(屬性)和行為(方法)。無論是具體的汽車、貓狗,還是抽象的訂單、賬戶,在 Java 世界裡都可以建模為對象。
類是具有相同屬性和功能的對象的抽象集合,可以想像為製造對象的「模具」。以天氣預報為例,我們可以將其抽象為擁有溫度、濕度等屬性的對象:
// 天氣預報實體類
public class WeatherForecast {
private int temperature;
private int humidity;
public int getTemperature() { return temperature; }
public void setTemperature(int temperature) { this.temperature = temperature; }
public int getHumidity() { return humidity; }
public void setHumidity(int humidity) { this.humidity = humidity; }
}
但對象不能憑空存在,需要一個統一管理的地方——這就是「類」的另一層含義:類是對象的容器與管理者。比如天氣預報工作站類:
// 天氣預報工作站類
public class WeatherForecastStation {
private int temperature;
private int humidity;
public int getTemperature() { return temperature; }
public void setTemperature(int temperature) { this.temperature = temperature; }
public int getHumidity() { return humidity; }
public void setHumidity(int humidity) { this.humidity = humidity; }
}
WeatherForecastStation)public 修飾public 類的文件名必須與類名一致,單文件僅能有一個 public 類實例就是真實存在的對象。「人」是類,而你我則是「人」類的兩個實例。實例化是通過 new 關鍵字創建對象的過程:
WeatherForecastStation station = new WeatherForecastStation();
這行代碼實際完成了兩步動作:
WeatherForecastStation station; // 1. 聲明引用變量 station = new WeatherForecastStation(); // 2. 實例化對象並賦值
理解類與實例的關係,是掌握 Java 物件導向編程的基石。只有厘清「模具」與「成品」的區別,才能在後續學習繼承、多態、設計模式時遊刃有餘。