国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發(fā)設計 > 正文

C#非常重要基礎之多態(tài)

2019-11-15 02:27:55
字體:
供稿:網(wǎng)友

C#非常重要基礎之多態(tài)

前幾天看了一位同志的博客,寫的是關于他自己去支付寶面試的經(jīng)歷。過程大體是這樣的:問答的時候,前面部分,作者都應答如流,說起自己經(jīng)驗如何之豐富,最后面試官問了作者一個問題:請簡述多態(tài)的概念和作用。結果這位作者竟然說這么基礎的問題還真不記得了,于是,面試失敗。

其實多態(tài),是個很基礎的,也非常重要的概念,作為程序開發(fā)者,這些基礎的概念必須非常牢固,在開發(fā)的過程中,才能得心應手。

同一操作作用于不同的對象,可以有不同的解釋,產(chǎn)生不同的執(zhí)行結果,這就是多態(tài)性。舉個通俗的例子:摩托車和汽車都是車子的派生類,如果我在另一個類中需要調(diào)用車子的剎車方法,那么我只需要把車子的對象傳參數(shù)進去,然后調(diào)用“剎車()”方法即可。而摩托車和汽車的剎車的方法實現(xiàn)不同,雖然都叫“剎車”,但一個是手抓,一個是腳踩。但我們調(diào)用的時候不需要知道具體的實現(xiàn),只管根據(jù)名稱調(diào)用即可,具體則根據(jù)示例的不同,而有不同的剎車方法的實現(xiàn)。

多態(tài)分為兩種:編譯時的多態(tài),和運行時的多態(tài)

編譯時的多態(tài):是通過重載來實現(xiàn)的。重載,即方法名稱相同,而參數(shù)的類型不同,或者參數(shù)的個數(shù)不同。最典型的重載是我們常用的“message”類下面的方法“show()”,一個參數(shù)代表彈出的信息內(nèi)容,第二個參數(shù)代表彈窗標題,等等。

運行時的多態(tài):通過虛成員的方式實現(xiàn)。在繼承關系里面,子類會繼承父類所有的屬性,方法,事件。那么如果子類需要更改某個方法(通俗的講,可以理解為子類需要一個和父類中同名的方法,但不同的實現(xiàn)),有兩種方法。而這兩種方法的區(qū)別,非常重要。

  1. 使用New關鍵字。當子類中使用New關鍵字來覆蓋父類中的同名方法時,父類的成員則被隱藏了,稱為“隱藏成員”。
  2. 基類中將成員聲明為虛成員。在基類成員的返回類型之前加關鍵字“virtual”即可聲明為虛擬成員。派生類,可以對虛擬成員進行重寫,重寫加關鍵字“override”即可。同樣可以實現(xiàn)替換基類的老成員。

那么,這兩種方式有什么不同呢?

如果使用New來覆蓋基類成員的時候,當派生類實例被轉(zhuǎn)換為基類型使用的時候,調(diào)用的成員會是被New隱藏掉的隱藏成員,是舊的。而如果是通過虛成員重寫的方式,那么調(diào)用的,會是被派生類重寫之后的新成員。

明白了么?如果分不清楚,可以這樣記:New覆蓋,只是用新的換了舊的,舊的還是存在,重寫,是把父類的也重新給寫了。

明白這個區(qū)別之后,什么時候該怎么用,也明白了吧。


發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 孝昌县| 特克斯县| 隆林| 呼玛县| 游戏| 吉安县| 平原县| 太白县| 阿巴嘎旗| 舟曲县| 资兴市| 义马市| 富裕县| 密云县| 莒南县| 赞皇县| 城固县| 景东| 临邑县| 宜昌市| 新乐市| 上蔡县| 沽源县| 长汀县| 固安县| 娄烦县| 驻马店市| 略阳县| 北碚区| 仪陇县| 镇远县| 重庆市| 西吉县| 忻城县| 武胜县| 邯郸市| 和顺县| 神农架林区| 余庆县| 威信县| 平南县|