C#中多態(tài)、重載、重寫區(qū)別分析
本文實例總結(jié)了C#中多態(tài)、重載與重寫的概念與區(qū)別。對于初學(xué)C#的朋友來說有不錯的參考價值。分享給大家供大家參考。具體分析如下:
重寫:是指重寫基類的方法,在基類中的方法必須有修飾符virtual,而在子類的方法中必須指明override。
格式如下:
1.在基類中:
public virtual void myMethod() { }
2.在子類中:
public override void myMethod() { }
重寫以后,用基類對象和子類對象訪問myMethod()方法,結(jié)果都是訪問在子類中重新定義的方法,基類的方法相當于被覆蓋掉了。
重載:用于在給定了參數(shù)列表和一組候選函數(shù)成員的情況下,選擇一個最佳函數(shù)成員來實施調(diào)用。
public void test(int x,int y){} public void test(int x,ref int y){} public void test(int x,int y,string a){}
重載的特征:
I.方法名必須相同
II.參數(shù)列表必須不相同,與參數(shù)列表的順序無關(guān)
III.返回值類型可以不相同
但如果有泛型,就要注意了!
多態(tài):c#的多態(tài)性主要體現(xiàn)在類的繼承上:
子類繼承父類的時候,可能出現(xiàn)同名但方法定義不同的情況,
所以在子類中會將原方法覆蓋,實現(xiàn)自身的要求.
需要注意的地方有兩點:
①.可以在子類中被重寫的方法一定要被標記成virtual(虛擬), abstract(抽象), override(重寫)標記為virtual 和abstract 的函數(shù)就是為了重寫而創(chuàng)建的,標記為override的函數(shù)本身是由前兩種函數(shù)重寫而來的,所以它可以被重寫也是順理成章的了;
②.重寫的函數(shù)必須在子類中出現(xiàn),而且任何一個父類的函數(shù)在其一個子類中只能被重寫一次。(這一點很好理解,當你要重寫兩次時,該子類中將定義兩個返回類型,方法名稱 和參數(shù)列表都相同的函數(shù),這肯定是不可能的)。
相信本文所述對大家C#程序設(shè)計的學(xué)習(xí)有一定的參考借鑒價值。
相關(guān)文章
C#實現(xiàn)按數(shù)據(jù)庫郵件列表發(fā)送郵件的方法
這篇文章主要介紹了C#實現(xiàn)按數(shù)據(jù)庫郵件列表發(fā)送郵件的方法,涉及C#讀取數(shù)據(jù)庫及通過自定義函數(shù)發(fā)送郵件的相關(guān)技巧,具有一定參考借鑒價值,需要的朋友可以參考下2015-07-07C# KeyUp事件中MessageBox的回車(Enter)鍵回調(diào)問題解決方案
這篇文章主要介紹了C# KeyUp事件中MessageBox的回車(Enter)鍵回調(diào)問題解決方案,需要的朋友可以參考下2014-07-07C# 數(shù)據(jù)庫鏈接字符串加密解密工具代碼詳解
本文通過代碼給大家介紹C# 數(shù)據(jù)庫鏈接字符串加密解密工具的相關(guān)知識,實現(xiàn)思路大概是使用兩個數(shù)對連接字符串進行加密,再用這兩個數(shù)進行解密,具體詳細代碼,大家參考下本文2018-05-05