在 Java 程式設計中,內部類是一項強大且靈活的特性,它允許在一個類的內部定義另一個類。這種設計不僅增強了封裝性,還能讓內部類直接訪問外部類的私有成員,實現緊密協作。本文通過一個經典的立方體與長方形計算案例,深入剖析內部類的定義語法、實例化方式及實際應用場景。
題目要求定義一個 Cube 類(立方體),包含高度屬性 height 和計算體積的方法 volume(double area),參數為底面積。在 Cube 內部定義 Rectangle 類(長方形),包含寬 width、長 length 及計算面積方法 area()。最終在測試類中組合調用,完成立方體體積計算。
class Cube {
private double height;
Cube() {}
Cube(double height) { this.height = height; }
public double volume(double area) {
return area * height;
}
// 非靜態內部類(成員內部類)
public class Rectangle {
private double width;
private double length;
Rectangle(double width, double length) {
this.width = width;
this.length = length;
}
public double area() {
return length * width;
}
}
}
public class Test {
public static void main(String[] args) {
// 正確實例化內部類:外部類實例.new 內部類構造器
Cube.Rectangle rect = new Cube().new Rectangle(10.0, 10.0);
double baseArea = rect.area();
Cube cube = new Cube(20.0);
double volume = cube.volume(baseArea);
System.out.println("立方體的體積 = " + volume);
}
}
OuterClass.InnerClass obj = new OuterClass().new InnerClass(); 必須先有外部類實例,才能創建內部類對象。若內部類聲明為 static,則不依賴外部類實例,實例化方式變為 new OuterClass.InnerClass()。匿名內部類常用於接口回調或抽象類快速實現,如 new Runnable() { public void run() {...} }。掌握這些變體能讓代碼更靈活優雅。