1. 程式人生 > >C#方法過載(overload)、重寫(覆蓋)(override)、隱藏(new)

C#方法過載(overload)、重寫(覆蓋)(override)、隱藏(new)

轉載地址:https://blog.csdn.net/u010926964/article/details/20719951

 過載、重寫、隱藏這三個概念對於很多人都不是很清晰,我也是差了很多資料又請教師哥才感覺能理解了,有不足之處還請老師同學們批評指正!

  定義:

  過載:同一個作用域內發生(比如一個類裡面),定義一系列同名方法,但是方法的引數列表不同。這樣才能通過傳遞不同的引數來決定到底呼叫哪一個。而返回值型別不同是不能構成過載的。

  重寫:繼承時發生,在子類中重新定義父類中的方法,子類中的方法和父類的方法是一樣的。例如:基類方法宣告為virtual(虛方法),派生類中使用override申明此方法的重寫.

  隱藏:基類方法不做申明(預設為非虛方法),在派生類中使用new宣告此方法的隱藏。

  示例:

  過載:

  


  重寫:

  

  隱藏:

  

  理解:

  過載必須發生在一個類中,函式名相同,引數型別或者個數可以不同,返回值型別可以不同。根據引數選擇呼叫方法。過載就是讓類以統一的方式處理不同的資料,在同一個類中多個方法可以用同一個名字就叫做方法過載。

  重寫override一般用於介面實現和繼承類的方法改寫,要注意:

  1、覆蓋的方法的標誌必須要和被覆蓋的方法的標誌完全匹配,才能達到覆蓋的效果;

  2、覆蓋的方法的返回值必須和被覆蓋的方法的返回一致;

  3、覆蓋的方法所丟擲的異常必須和被覆蓋方法的所丟擲的異常一致,或者是其子類;

  4、被覆蓋的方法不能為private,否則在其子類中只是新定義了一個方法,並沒有對其進行覆蓋。

  5、可以說,override是一個非常智慧的東西,它可以動態決定究竟是採用父類還是子類的方法。

  隱藏簡單地說就是基類中已經定義的方法,派生類中也需要用,而兩個方法完全相同的話就會出現語法錯誤,所以用關鍵字new把基類中的方法隱藏了,但是該方法想用的時候還可以發揮作用,又不會發生語法衝突。
--------------------- 
作者:邵鴻鑫 
來源:CSDN 
原文:https://blog.csdn.net/u010926964/article/details/20719951 
版權宣告:本文為博主原創文章,轉載請附上博文連結!