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

Java 多態初體驗:從繼承到接口的靈活設計

     編輯:Java 相關知識

場景:電腦家族的開機行為

基類 Computer 定義開機方法:

class Computer {
    public void turnOn() { }
}

子類 PC、NB(筆記本)繼承並覆寫:

class PC extends Computer {
    public void turnOn() { System.out.println("PC has turn on"); }
}
class NB extends Computer {
    public void turnOn() { System.out.println("NB has turn on"); }
}

多態威力:統一接口處理不同對象

測試類接收基類參數:

class Test {
    public void go(Computer computer) {
        computer.turnOn();  // 動態分派到具體子類實現
    }
}

調用:

Test test = new Test();
test.go(new PC());  // 輸出: PC has turn on
test.go(new NB());  // 輸出: NB has turn on

同樣的 go() 方法,傳入不同子類對象,自動調用對應的 turnOn() 實現——這就是多態。

對比:無多態的代碼冗餘

若不使用基類參數,需為每個子類寫重載方法:

public void go(PC computer) { computer.turnOn(); }
public void go(NB computer) { computer.turnOn(); }

缺點:

  • 大量重複代碼(方法體相同,僅參數類型不同)。
  • 新增子類(如 Server)需新增重載,維護成本隨類型增長線性增長。
  • 違反開閉原則:擴展功能需修改現有代碼。

多態的核心價值

  1. 代碼復用:通用邏輯寫在基類引用方法中,子類只實現差異化行為。
  2. 擴展性:新增子類零修改現有代碼,只需實現接口/繼承基類。
  3. 解耦:調用者依賴抽象(基類/接口),不依賴具體實現。

進階提示

這只是多態最基礎應用。Java 多態機制還包含:

  • 向上轉型與向下轉型
  • 抽象類與接口的多態區別
  • 動態綁定機制(JVM 如何在運行時確定方法版本)
  • 多態與設計模式(策略、模板方法等)的結合

建議深入閱讀《Java 編程思想》系統掌握。本文旨在通過最簡單例子建立直觀認知。

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