国产探花免费观看_亚洲丰满少妇自慰呻吟_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ā)表
主站蜘蛛池模板: 连云港市| 鹤山市| 宁津县| 电白县| 洪雅县| 惠来县| 高要市| 文山县| 延津县| 仁寿县| 乌兰县| 汾西县| 百色市| 招远市| 樟树市| 东莞市| 托克逊县| 漯河市| 吉林市| 健康| 长顺县| 道孚县| 宁化县| 荥经县| 海城市| 新密市| 阿瓦提县| 合作市| 南昌市| 阿合奇县| 淮南市| 齐河县| 英超| 诏安县| 江西省| 图片| 互助| 山东省| 宿松县| 汉寿县| 大余县|