本文透過一個經典的 Java 面向對象練習題,展示如何運用繼承機制設計矩形類別體系,包含基礎矩形 Rect 與具備座標定位功能的 PlainRect,並附上完整測試程式碼。
protected double width(寬)、protected double height(高)area() 計算面積、perimeter() 計算周長startX、startY(左上角座標)isInside(double x, double y) 判斷點是否在矩形內部x >= startX && x <= (startX + width) && y >= startY && y <= (startY + height)package rect;
public class Rect {
protected double height;
protected double width;
public Rect() {
this.width = 10.0;
this.height = 10.0;
}
public Rect(double width, double height) {
this.width = width;
this.height = height;
}
public double area() {
return width * height;
}
public double perimeter() {
return 2 * (width + height);
}
}
package rect;
public class PlainRect extends Rect {
private double startX;
private double startY;
public PlainRect() {
this(0, 0, 0, 0);
}
public PlainRect(double startX, double startY, double width, double height) {
super(width, height); // 呼叫父類建構子
this.startX = startX;
this.startY = startY;
}
public boolean isInside(double x, double y) {
return x >= startX && x <= (startX + width)
&& y >= startY && y <= (startY + height);
}
// Getter/Setter 略
}
package rect;
public class TestPlainRect {
public static void main(String[] args) {
// 建立左上角(10,10)、寬20、高10的矩形
PlainRect rect = new PlainRect(10, 10, 20, 10);
System.out.println("矩形面積:" + rect.area()); // 200.0
System.out.println("矩形周長:" + rect.perimeter()); // 60.0
// 判斷點 (25.5, 13) 是否在內部
boolean inside = rect.isInside(25.5, 13);
System.out.println("點(25.5, 13)在矩形內?" + inside); // true
}
}
程式正確輸出面積 200.0、周長 60.0,且判斷點 (25.5, 13) 位於矩形範圍內(X: 10~30, Y: 10~20),回傳 true。此範例完整展示了繼承、封裝、多態等 OOP 核心概念的實際應用。