瀏覽單個文章
SGI
Major Member
 
SGI的大頭照
 

加入日期: Sep 2003
文章: 263
引用:
作者T磨人v2
就我對你問題的理解, 下面你參考 看看, 無針對語言性質.

多型其中一個用途, 當我寫好一個 methodA(BENZ) , 我可能目前只有 BENZ, 但以後有 LAMB 時, 這methodA 就不能用, 但如果是 methodA(CARClass),
CARClass defined method startUrEngine() , 並實做了大眾規格的啟動方式 , methodA 內部實做會呼叫 CARClass.startUrEngine,

BENZ 和 LAMB 繼承 CARClass ,
假如這兩台車啟動行為不同, BENZ 和 LAMB 就會 override startUrEngine , 實做自己所需要的內容, 如果 LAMB 是用 大眾規格啟動方式, 就無需實作自己的啟動行為 ,
但BENZ 啟動方式特殊, 所以他就override startUrEngine 實做自己的行為.
如此 methodA 不用因為今天多了 TOYOTA 這輛車就要改寫,只要他也繼承 CARClass 並override startUrEngine 實作了自己的行為.

這是多型的其中一種用法也有用 interface 來達到相同目的,
方法很...

感謝大大的指教~
不過大大你好像只是在解釋virtual 與 override 的概念
當基底類別方法有可能被衍生類別覆蓋, 就要使用override 或 new
我想這是許多物件導向語言共同的特性

我這邊的問題是 CarClass 與 BenzClass 是不同類別, 擁有自己的method
雖然BenzClass是CarClass的衍生類別
CarClass Base = (CarClass)Benz;
Base 是CarClass 的實作物件嗎? 或是只是由Benz物件轉型而來?
這樣寫法是有什麼含義嗎?
__________________
時機歹歹 隨人顧性命
舊 2015-03-05, 12:42 PM #3
回應時引用此文章
SGI離線中