C#方法重載(overload),、重寫(覆蓋)(override)、隱藏(new)重載,、重寫,、隱藏這三個概念對于很多人都不是很清晰,我也是差了很多資料又請教師哥才感覺能理解了,,有不足之處還請老師同學(xué)們批評指正,! 定義: 重載:同一個作用域內(nèi)發(fā)生(比如一個類里面),定義一系列同名方法,,但是方法的參數(shù)列表不同,。這樣才能通過傳遞不同的參數(shù)來決定到底調(diào)用哪一個。而返回值類型不同是不能構(gòu)成重載的,。 重寫:繼承時發(fā)生,,在子類中重新定義父類中的方法,子類中的方法和父類的方法是一樣的,。例如:基類方法聲明為virtual(虛方法),,派生類中使用 override 申明此方法的重寫. 隱藏:基類方法不做申明(默認(rèn)為非虛方法),在派生類中使用 new 聲明此方法的隱藏,。 示例: 重載:
重寫:
隱藏:
理解: 重載必須發(fā)生在一個類中,,函數(shù)名相同,參數(shù)類型或者個數(shù)可以不同,,返回值類型可以不同,。根據(jù)參數(shù)選擇調(diào)用方法。重載就是讓類以統(tǒng)一的方式處理不同的數(shù)據(jù),,在同一個類中多個方法可以用同一個名字就叫做方法重載,。 重寫override一般用于接口實現(xiàn)和繼承類的方法改寫,要注意: 1、覆蓋的方法的標(biāo)志必須要和被覆蓋的方法的標(biāo)志完全匹配,,才能達(dá)到覆蓋的效果,; 2、覆蓋的方法的返回值必須和被覆蓋的方法的返回一致,; 3,、覆蓋的方法所拋出的異常必須和被覆蓋方法的所拋出的異常一致,或者是其子類,; 4,、被覆蓋的方法不能為private,否則在其子類中只是新定義了一個方法,,并沒有對其進(jìn)行覆蓋,。 5、可以說,,override是一個非常智能的東西,,它可以動態(tài)決定究竟是采用父類還是子類的方法。 隱藏簡單地說就是基類中已經(jīng)定義的方法,,派生類中也需要用,而兩個方法完全相同的話就會出現(xiàn)語法錯誤,,所以用關(guān)鍵字new把基類中的方法隱藏了,,但是該方法想用的時候還可以發(fā)揮作用,又不會發(fā)生語法沖突,。 |
|