構造方法是初學者最易混淆的概念之一。首先釐清:**構造方法與普通方法無任何關係**,僅因翻譯名稱相似。兩者功能、聲明、調用語法全然不同:
訪問控制符 構造方法名(參數列表) {
構造方法體;
}
硬性規定:構造方法名**必須與類名相同**。
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 ClassName() {}
以下兩段代碼等價:
public class DefaultConstructor { int a; }
// 等同於
public class DefaultConstructor {
int a;
public DefaultConstructor() {}
}
一旦自定義構造方法,系統不再生成默認構造。
需求:用面向對象描述房屋結構(顏色用數字代碼:紅=1、白=2、黃=3、透明=0)
// Door.java
public class Door {
int color;
public Door() { color = 1; }
public void open() {}
public void close() {}
}
// Window.java
public class Window {
int color;
Glass glass; // 使用關係:窗包含玻璃
public Window() { color = 2; }
public void open() {}
public void close() {}
}
// Glass.java
public class Glass {
int color;
public Glass() { color = 0; }
public void remove() {}
}
// Floor.java
public class Floor {
FloorBrick[] fb;
public Floor() {
fb = new FloorBrick[100];
for (int i = 0; i < fb.length; i++) fb[i] = new FloorBrick();
}
}
// FloorBrick.java
public class FloorBrick {
int color, length, width;
public FloorBrick() { color = 3; length = 1; width = 1; }
}
此例展示了從需求分析到代碼落地的完整面向對象建模過程,是掌握 OOP 核心技能的關鍵練習。