本文實例總結了C#中多態、重載與重寫的概念與區別。對于初學C#的朋友來說有不錯的參考價值。分享給大家供大家參考。具體分析如下:
重寫:是指重寫基類的方法,在基類中的方法必須有修飾符virtual,而在子類的方法中必須指明override。
格式如下:
1.在基類中:
public virtual void myMethod() { }
2.在子類中:
public override void myMethod() { }
重寫以后,用基類對象和子類對象訪問myMethod()方法,結果都是訪問在子類中重新定義的方法,基類的方法相當于被覆蓋掉了。
重載:用于在給定了參數列表和一組候選函數成員的情況下,選擇一個最佳函數成員來實施調用。
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.參數列表必須不相同,與參數列表的順序無關
III.返回值類型可以不相同
但如果有泛型,就要注意了!
多態:c#的多態性主要體現在類的繼承上:
子類繼承父類的時候,可能出現同名但方法定義不同的情況,
所以在子類中會將原方法覆蓋,實現自身的要求.
需要注意的地方有兩點:
①.可以在子類中被重寫的方法一定要被標記成virtual(虛擬), abstract(抽象), override(重寫)標記為virtual 和abstract 的函數就是為了重寫而創建的,標記為override的函數本身是由前兩種函數重寫而來的,所以它可以被重寫也是順理成章的了;
②.重寫的函數必須在子類中出現,而且任何一個父類的函數在其一個子類中只能被重寫一次。(這一點很好理解,當你要重寫兩次時,該子類中將定義兩個返回類型,方法名稱 和參數列表都相同的函數,這肯定是不可能的)。
相信本文所述對大家C#程序設計的學習有一定的參考借鑒價值。
新聞熱點
疑難解答