繼承體系最終形成統一介面的類別族群。向上轉型讓衍生類別物件視為基礎類別,實現「對介面程式設計,不對實作程式設計」。
void doStuff(Shape s) {
s.erase(); s.draw(); // 僅依賴 Shape 介面
}
Circle c = new Circle();
Triangle t = new Triangle();
doStuff(c); doStuff(t); // Circle/Triangle 視為 Shape
Circle 是 Shape,傳遞給期望 Shape 的方法安全合法。編譯器允許衍生類別參考隱含轉為基礎類別參考。
Pentagon)無需修改既有代碼if/else 型別檢查的維護惡夢向上轉型是多型的基石,掌握其機制與設計哲學,能建構靈活可擴充的物件導向系統。