首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 程式設計入門

Java 繼承實戰:從矩形類到定位矩形的完整設計與實作

     編輯:Java 程式設計入門

本文透過一個經典的 Java 面向對象練習題,展示如何運用繼承機制設計矩形類別體系,包含基礎矩形 Rect 與具備座標定位功能的 PlainRect,並附上完整測試程式碼。

需求分析與類別設計

1. 基礎矩形類 Rect

  • 屬性:protected double width(寬)、protected double height(高)
  • 建構子:
    • 無參數:預設寬高皆為 10
    • 雙參數:指定寬高初始化
  • 方法:area() 計算面積、perimeter() 計算周長

2. 定位矩形類 PlainRect(繼承 Rect)

  • 新增屬性:startX、startY(左上角座標)
  • 建構子:
    • 四參數:初始化座標、寬、高
    • 無參數:全部預設為 0
  • 核心方法:isInside(double x, double y) 判斷點是否在矩形內部
    判斷邏輯:x >= startX && x <= (startX + width) && y >= startY && y <= (startY + height)

完整程式碼實作

Rect 類

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);
    }
}

PlainRect 類

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 核心概念的實際應用。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved