→ testPtt: 一個字都不變的話就是重寫一個class12/21 12:44
→ testPtt: 如果你是要void SetPrice(T Maker):where T:xx{}那就這樣12/21 12:55
→ testPtt: 裡面還是要轉型的動作12/21 12:56
我是有想到泛型
大概是學藝不精,無法實現我的想法
如果將程式放在建構子內是可以達成我的需求
但偏偏我想用的方法不只一個
也想過用父類別作為引數的型別
但裡面就是還需要轉型
※ 編輯: berice152233 (1.165.108.69 臺灣), 12/21/2019 13:45:45
→ testPtt: Maker.Car()用delegate呢12/21 14:05
感謝建議
不過我現在是用其他的方式
但寫得有點複雜
只是想說要再精簡
感覺用委託不會縮短太多
→ samchung: 但會改到 SetPrice 的參數型別,各車種也要繼承此介面12/21 14:54
居然還有泛型的做法
真的是太感動了……!
我回家後立刻就來試試看
我發現我說得不夠精確
其他地方完全是可以改的
只是希望固定之後就不要再動了
※ 編輯: berice152233 (111.83.191.226 臺灣), 12/21/2019 15:04:23
→ samchung: 其實泛型的做法 1F 就有提過了,我只是順便寫出來 XD 12/21 15:10
當然也很感謝1F
只是很慚愧的我寫不出來
你能寫出來真的是幫了大忙了
※ 編輯: berice152233 (106.105.207.206 臺灣), 12/22/2019 02:00:02
推 jass970991: 看不是很懂 感覺你只是需要interface 12/22 15:54
是的...
後來我發現繼承抽象類別或虛擬方法也可以做到一樣的事情
我最一開始是使用普通繼承
並在方法加new
用父類別當作引數的型別時
發現還是叫到父類的方法
所以就下意識以為抽象和介面也都是這樣
看書自學時總覺得沒什麼問題
有些觀念真的是要下去寫才能體會
※ 編輯: berice152233 (59.125.120.238 臺灣), 12/23/2019 11:09:11
→ ssccg: 因為new就不是一般OOP繼承時的行為,是定義同名方法隱藏父 12/25 09:55
→ ssccg: 類中的方法,virtual才是比較常見的OOP行為 12/25 09:59
→ ssccg: 很多其他OOP語言裡方法預設就是virtual,沒有new這種功能 12/25 10:07
推 zenuo: 用interface 在個別實作三個類別 12/26 15:39