首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

Java 抽象類的核心價值:定義共同行為與實現多態

     編輯:程式設計綜合問答

為什麼需要抽象類?

若類別 A 僅表示一個抽象概念(如「幾何圖形」),不應被實例化。宣告為 abstract 可強制子類實作抽象方法,並確保多態行為。

經典範例:幾何圖形體系

abstract class Shape {
    abstract double area();
    abstract double perimeter();
    // 共同行為:比較面積
    int compareArea(Shape other) {
        return Double.compare(this.area(), other.area());
    }
}

class Circle extends Shape {
    double radius;
    double area() { return Math.PI * radius * radius; }
    double perimeter() { return 2 * Math.PI * radius; }
}

class Rectangle extends Shape {
    double width, height;
    double area() { return width * height; }
    double perimeter() { return 2 * (width + height); }
}

關鍵優勢

  1. 契約強制:編譯器強制子類實作 area()、perimeter()。
  2. 多態複用:compareArea 定義於父類,所有子類自動擁有比較能力,無需重寫。
  3. 避免實例化:new Shape() 編譯報錯,語義更清晰。

對比:不使用 abstract 的後果

  • 父類提供預設實作(如回傳 0),子類若忘記覆寫會導致邏輯錯誤且難發現。
  • 父類可被實例化,產生無意義物件。

抽象類是「定義介面、共享實作、強制契約」的最佳工具,配合多態實現開放封閉原則。

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