C#方法重載


一、 描述

  在面向對象的語言中,允許我們在同一個類中定義多個方法名相同、參數列表(參數類型,參數個數)不同的方法,這樣的形式我們稱為方法重載。調用時編譯器會根據實際傳入參數的形式,選擇與其匹配的方法執行。


二、 重載的分析

1.生活中的方法重載

2.將生活重載的表現形式,抽象成代碼的形式:

3.構成方法重載的條件

a方法名相同。

b.方法參數類型不同或者參數個數不同。

c.在同一個類中。


三、 重載示例

1.我們實現一個薪水計算類,用重載的方法實現項目經理和程序員的薪水計算

 1   class ComSalary
 2     {
 3         
 4         //項目經理的薪水計算:薪水=基礎工資+項目獎金+分紅
 5         public static int Pay(PM pm)
 6         {
 7             return pm.BasePay + pm.MeritPay + pm.Bonus;
 8         }
 9 
10         //程序員的薪水計算:薪水=基礎工資+項目獎金
11         public static int Pay(SE se)
12         {
13             return se.BasePay + se.MeritPay;
14         }
15 
16 }
17 
18      static void Main(string[] args)
19         {
20 
21              //實例化一個程序員對象
22             SE tom = new SE {  Id="998", Name="湯姆", BasePay=6000, MeritPay=1000};
23 
24             //實例化一個項目經理對象
25             PM jack = new PM { Id = "110", Name = "傑克", BasePay = 9000, MeritPay = 2000, Bonus=1500};
26 
27             //計算工資
28             Console.WriteLine("程序員的薪水:"+ComSalary.Pay(tom));
29             Console.WriteLine("項目經理的薪水:" + ComSalary.Pay(jack));
30 
31         }

運行結果:

 

2.示例解析:

  通過Pay()方法重載計算項目經理和程序員的薪水。假如我們不用方法重載會怎么樣呢?例如,計算程序員薪水寫成PaySE(SE se)方法,而計算項目經理的薪水用PayPM(PM pm)方法。這樣確實也能完成計算薪水的任務,但是不符合面向對象的思想,造成一些冗余形式。       大家可以想想,在實際開發中計算薪水的員工可能還有很多種角色,如股東等,我們誇張一點,將需要計算的角色設為上千個,那么將不得不寫一百個不同的方法。此時,延伸出來的問題有:1.方法命名的困難;2.調用方法者調用方法選擇的困難。因此,方法重載就解決了這樣的麻煩。


 四、重載的細節

1.無關返回值,圖例:

結論:僅方法名相同參數列表相同,但返回值類型不同的方法不能構成重載。

2.類中的構造函數也可以實現重載,是方法重載的一種特殊形式。


 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM