對象是面向對象技術的核心,「萬事萬物皆對象」不僅是經典語句,更是認知世界的根本方式。無論是現實中的一個人、數據庫中的一張表,在面向對象視角裡,皆為對象。
面向對象提供一種思考方式——將複雜結構視為整體。認識電腦時,先拆解為顯示器、硬盤、CPU 等對象,再逐個攻克,大幅降低認知複雜度。
同理,設計電腦時將其拆分為獨立模組分別設計,再組裝成系統。這種「分而治之」的思想,使面向對象在程序設計中廣泛應用,本質是對現實認知規律的昇華,並非計算機領域專屬。
在 Java 語法層面,對象是復合數據類型的變量(數組、類、接口),內部封裝屬性(數據)與方法(功能)。可類比 C 語言的結構體變量,每個對象存儲類中對應屬性的具體數值。
以 Box 類為例:
public class Box {
int length, width, height;
public Box() { length = width = height = 10; }
public Box(int l, int w, int h) { length = l; width = w; height = h; }
public int volume() { return length * width * height; }
}
Box b; // 聲明 Box 類型對象 b,值為 null,不佔內存
Box b1, b2; // 可一次聲明多個
要求數據類型為復合類型,基本類型聲明的僅稱變量。
通過 new 調用構造方法,在堆內存申請空間並初始化屬性:
Box b = new Box(); // 無參構造,屬性均為 10
Box b1; b1 = new Box(2,3,4); // 有參構造,長寬高分別為 2、3、4
b.width = 5; // 語法:對象名.屬性名,表達式類型與屬性聲明類型一致
最佳實踐:實際開發中避免直接訪問屬性,改用 getter/setter 方法配合訪問控制符,實現封裝。
int v = b.volume(); // 語法:對象名.方法名(參數),實現功能調用與信息傳遞
對象間通過方法調用關聯,構建有機系統,滿足業務需求。
Java 運行時內存分兩大區域:
對象存儲包含兩部分:對象內容(堆中)與 對象起始地址(棧中引用變量持有)。這解釋了為何對象屬於引用類型,賦值傳遞的是地址而非內容副本。