溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

C# 隱藏方法和重寫方法

發(fā)布時間:2020-07-22 10:29:57 來源:網(wǎng)絡 閱讀:1225 作者:海灬未眠 欄目:編程語言


1:方法重寫:就是在基類中的方法用virtual關鍵字來標識,然后在繼承類中對該類進行重寫

  

 (override),這樣基類中的方法在子類中已經(jīng)被重寫了,基類中的方法在子類中已經(jīng)失去了功能


  了。當讓基類的對象的引用直接指向繼承類的對象時(多態(tài)性),調用該方法則是調用的繼承類中重


  寫的方法。


2:方法隱藏:無論基類中的方法是否用了virtual關鍵字,繼承類中都可以用new關鍵字(如果不用new


  的話,不會產生錯誤,但會生成一個編譯警告)將基類中的方法隱藏,所謂隱藏就是隱藏,不像重


  寫,重寫就是基類中的舊方法在子類中已經(jīng)不存在了,而隱藏是基類中的方法和子類中重寫得到的新


  方法都存在。所以當讓基類的對象的引用直接指向繼承類的對象時(多態(tài)性),調用該方法則是調用


  的基類的方法。


代碼如下:    

         class BaseClass
      {
         public void functionA()
          {
              Console.WriteLine("BaseFunctionA ===");
          }
          public virtual void functionB()
          {
              Console.WriteLine("BaseFunctionB ===");
         }
     }
     class DerivedClass : BaseClass
     {
         new public void functionA()
         {
             Console.WriteLine("DerivedFunctionA ===");
         }
         public override void functionB()
         {
             Console.WriteLine("DerivedFunctionB ===");
         }
     }
    class Program
    {
        static void Main(string[] args)
        {
            BaseClass b2 = new DerivedClass();
            b2.functionA();//BaseFunctionA ===
            b2.functionB();//DerivedFunctionB ===
            Console.WriteLine("-----");
            BaseClass b = new BaseClass();
            b.functionA();//BaseFunctionA ===
            b.functionB();//BaseFunctionB ===
            Console.WriteLine("-----");
            DerivedClass d = new DerivedClass();
            d.functionA();//DerivedFunctionA ===
            d.functionB();//DerivedFunctionB ===
            Console.WriteLine("-----");
        }      
    }


向AI問一下細節(jié)

免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權內容。

AI