C#中的方法(二)
| 前言 |
C#中的方法(一)。本篇博文將為大家分享一些方法中的特殊方法內(nèi)容— 虛方法、抽象方法、靜態(tài)方法、實例方法。
| 正文 |
? ? 用virtual修飾的方法叫做虛方法。虛方法可以在子類中通過override關(guān)鍵字來重寫。常見的虛方法:ToString()Equals。
? ? 特點:虛方法不能用static修飾,方法重寫與基類的簽名必須一致。virtual不能與private同時使用。
版本控制:需要保留基類方法使用new關(guān)鍵字;需要重寫方法時使用override關(guān)鍵字。
重寫:不同對象對于同一個方法調(diào)用產(chǎn)生不同的行為(指不同對象收到相同消息時會產(chǎn)生不同行為)。
重寫與重載的區(qū)別:重載與重寫之間沒有關(guān)系,一字之差它們就有天壤之別。重載是方法的名稱相同,參數(shù)或參數(shù)類型不同,進行多次重載以適應(yīng)不同的需要,重載是面向過程的概念。而重寫是使用Override進行基類中函數(shù)的重寫,重寫是面向?qū)ο蟮母拍睢?/font>
子類重寫父類的方法:虛方法、重寫方法(重寫基類方法一樣可以調(diào)用基類方法)。
子類可以有與父類方法名相同的方法:子類與父類簽名相同,可以在子類中使用隱藏基類的方法,但是會出現(xiàn)一條綠線。解決辦法:1.可以在子類方法的修飾符后面加new就解決了。無論是否加new 都不影響使用。new隱藏了父類的方法。2.把父類中的方法轉(zhuǎn)換成虛方法,在void前面加virtual,把子類中的方法重寫 加override。即在父類的方法的修飾符后面加virtual,在子類中重寫父類的方法,在子類方法的修飾符后面加上override;調(diào)用父類的方法,但是把父類的方法進行重寫了,更換了方法里面的內(nèi)容。
抽象方法:
? ? 抽象方法由abstract修飾。使用abstract注意事項:抽象方法沒有方法體,抽象方法必須存在于抽象類中(抽象成員只能存在于抽象類中)、必須被子類重寫。
虛方法與抽象方法比較:
靜態(tài)方法與實例方法:
? ? 定義和調(diào)用:
| 結(jié)語 |
總結(jié)