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

Java 物件導向核心:抽象類別定義規則、建構子鏈與模板模式實作範例

     編輯:Java 相關知識

抽象類別規則

  • 含 abstract 方法的類必須宣告為 abstract class。
  • 抽象方法僅宣告無實作,子類**必須**實作 (除非子類也是抽象類)。
  • 不可用 final 修飾抽象類/方法 (違背繼承/覆寫目的)。
  • 抽象方法不可 private (子類需可見)。
  • 可有建構子、靜態方法、非抽象方法、各類屬性。

基本語法

abstract class Shape {
    private String color;
    public Shape(String color) { this.color = color; }
    public String getColor() { return color; }
    public abstract double area(); // 抽象方法
    public void printInfo() { System.out.println("Color: " + color); } // 普通方法
}

子類實作與建構子鏈

class Circle extends Shape {
    private double radius;
    public Circle(String color, double radius) {
        super(color); // 必須先呼叫父類建構子
        this.radius = radius;
    }
    @Override
    public double area() { return Math.PI * radius * radius; }
}

class Rectangle extends Shape {
    private double w, h;
    public Rectangle(String color, double w, double h) {
        super(color);
        this.w = w; this.h = h;
    }
    @Override
    public double area() { return w * h; }
}

模板方法模式應用

抽象類定義演算法骨架,延遲關鍵步驟至子類實作。

abstract class DataProcessor {
    // 模板方法 (final 防止覆寫)
    public final void process() {
        readData();
        handleData(); // 抽象步驟
        writeData();
    }
    protected void readData() { System.out.println("讀取資料..."); }
    protected abstract void handleData(); // 子類實作
    protected void writeData() { System.out.println("寫入資料..."); }
}

class CsvProcessor extends DataProcessor {
    @Override protected void handleData() { System.out.println("處理 CSV..."); }
}
class JsonProcessor extends DataProcessor {
    @Override protected void handleData() { System.out.println("處理 JSON..."); }
}

實例化順序

  1. 父類靜態成員/靜態區塊
  2. 子類靜態成員/靜態區塊
  3. 父類實例成員/實例區塊
  4. 父類建構子
  5. 子類實例成員/實例區塊
  6. 子類建構子

抽象類雖不可直接 new,但作為父類建構子鏈關鍵一環,確保子類物件完整初始化。

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