程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> C#溫習之重寫、重載

C#溫習之重寫、重載

編輯:C#入門知識

重寫:是指子類重新定義父類虛函數的方法。

 public class Employee
        {

            
            virtual public void CalculatePlay()
            {
                Console.WriteLine("Employee");
            }
        }
        class SalariedEmployee : Employee
        {

                public override void CalculatePlay()
            {
                Console.WriteLine("Salary");
            }
        }

        static void Main(string[] args)
        {
            Employee em = new SalariedEmployee();
                      em.CalculatePlay();

        }

 

就是在基類中的方法用virtual關鍵字來標識,然後在繼承類中對該類進行重寫(override),這樣基類中的方法已經被重寫了,已經失去了功能了。當讓基類的對象的引用直接指向繼承類的對象時(多態性),調用該方法則是調用的繼承類的方法。

 

重寫方法要求具有相同的方法簽名,包括:相同的方法名、相同的參數列表和相同的返回值類型。

 

 

在一個類中存在方法名相同、參數列表不同(參數個數或者參數類型不同)、返回值類型可以不相同 的現象我們稱之

為overloading,即重載
 

 

方法隱藏:無論基類中的方法是否用了virtual關鍵字,繼承類中都可以用new關鍵字(如果不用new的話,不會產生錯誤,但會生成一個編譯警告)將基類中的方法隱藏,重寫就是原來的(基類中)已經不存在了,而隱藏是原來的還存在。所以當讓基類的對象的引用直接指向繼承類的對象時(多態性),調用該方法則是調用的基類的方法。

基類方法不做申明(默認為非虛方法),在派生類中使用new聲明此方法的隱藏。訪問父類則調用父類的方法,訪問子類則調用子類的方法。

 

 public class Employee
        {

            public void Fn()
            {

                Console.WriteLine("Employee");

            }


          
        }
        class SalariedEmployee : Employee
        {

            public  new void Fn()
            {

                Console.WriteLine("SalariedEmployee");

            }
          
        }

        static void Main(string[] args)
        {
            SalariedEmployee se = new SalariedEmployee();
            se.Fn();
            Employee em = new SalariedEmployee();
            em.Fn();

           

        }
    }
 

結果為:

  SalariedEmployee

  Employee

    

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved