基類 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)需新增重載,維護成本隨類型增長線性增長。這只是多態最基礎應用。Java 多態機制還包含:
建議深入閱讀《Java 編程思想》系統掌握。本文旨在通過最簡單例子建立直觀認知。