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

加入日期: Sep 2003
文章: 263
引用:
作者harrisonlin
你的程式輸出是什麼?是否2行都是"Benz"?我不確定C#的method定義裡的"virtual","new"和"override"的意義,所以不確定.

就你的問題回答:

"CarClass Base = (CarClass)Benz;
Base 是CarClass 的實作物件嗎? 或是只是由Benz物件轉型而來?
這樣寫法是有什麼含義嗎?"

BenzClass繼承自CarClass,所以BenzClass的instance就是CarClass的instance.轉型只是我們想把Base這個物件當成CarClass的instance來操作.

這個例子裡只有一個super class和一個sub class,如果你多增加幾個sub class(BmwClass, AudiClass等等),然後生一個CarClass的容器(List, Set,或Array),任意丟一些上述sub class的instance進去,然後一個一個呼叫它們的run()或是getName()...

你有沒有發現到,你不需要知道這些容器裡的instance實際上是什麼型別(是Benz或BMW或Audi...),但它們...

是的, 兩行輸出都是Benz
大大你應該是相當資深的programmer
這種解釋內容我第一次看到, 跟網路上一堆八股說法截然不同
小弟一定會仔細研究~感謝兩位大大的幫忙, 讓小弟可以有方向可以繼續下去~!!
__________________
時機歹歹 隨人顧性命
舊 2015-03-05, 01:54 PM #8
回應時引用此文章
SGI離線中