第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定

正在回答

5 回答

你可以去看一下老師第二課的代碼,你會發(fā)現(xiàn)老師實例化的時候是

Dog?dog=new?Dog();

這個時候就是new,它的引用是派生類的,你引用了之后本來應該使用基類的那個方法,可是在運行的時候派生類用自己的new過的方法把那個替換了;

但是如果是使用虛方法,那么實例化的時候引用就是基類;只不過在運行的時候如果發(fā)現(xiàn)實例化的new后面的類型里面有一個override一個virtual的方法,就會去調(diào)用那個方法,而不是基類的。不過說到底作為一個初學者我也不知道有什么不可取代的地方~

0 回復 有任何疑惑可以回復我~

根據(jù)依賴倒置原則,在主程序中調(diào)用方法一般用基類來調(diào)用,如Pet.Speak(),而不用Dog.Speak,當在基類的方法聲明為Virtual虛方法后,調(diào)用時會檢驗基類所指向的派生類的方法是否被override重寫,如果被重寫則調(diào)用的是重寫后的方法;使用new隱藏方法時,時在派生類中的方法用new聲明。

0 回復 有任何疑惑可以回復我~

這個是設計原則,要盡量依賴基類,這就是多態(tài)。

設計成多態(tài),就要用override。

單單使用繼承重寫方法,就用new。

就結(jié)果而言應該一樣的。但是實例化的類不一樣,override是實例了基類,new實例了子類。

使用override可以降低程序耦合,更加推薦啊。

1 回復 有任何疑惑可以回復我~

new 用來隱藏基類中的方法,只有通過派生類本身類的引用才能調(diào)用出。

override 用來重寫基類中的方法,通過基類調(diào)用出的是派生類重寫后的方法??梢詫崿F(xiàn)多態(tài)。

2 回復 有任何疑惑可以回復我~

new用來實例化一個類,作用對像是類.Override是重寫,作用對像是變量或方法,在繼承一個父類的情況下才有意義,將覆蓋父類中的變量或方法.

0 回復 有任何疑惑可以回復我~
#1

Graphemer 提問者

我說的new指的是類里面同名隱藏父類方法的那個new 不是= new XX()的那個new
2017-05-17 回復 有任何疑惑可以回復我~

舉報

0/150
提交
取消

C#既然有virual和override,那還要new有什么用呢?

我要回答 關注問題
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網(wǎng)微信公眾號