C#中類的方法重寫


版權聲明:本文為博主原創文章。未經博主同意不得轉載。 https://blog.csdn.net/u010858791/article/details/25537153
      “重寫”父類方法就是改動它的實現方式或者說在子類中對它進行又一次編寫。

     子類繼承父類的方法,在調用對象繼承方法的時候,調用和運行的是父類的實現。

可是,有時候須要對子類中的繼承方法有不同的實現方式。

     比如,如果動物存在“叫”的方法,從中繼承有貓類和狗類兩個子類。

     重寫父類的方法要用到overridekeyword(具有overridekeyword修飾的方法是對父類中同名方法的新實現)。要重寫父類的方法,前提是父類中該要被重寫的方法必須聲明為virtual或者是abstract類型。

給父類中要被重寫的方法加入virtualkeyword表示能夠在子類中重寫它的實現。(注:C#中的方法默認並非virtual類型的,因此要加入virtualkeyword才干夠被重寫)。

      virtualkeyword用於將方法定義為支持多態,有virtualkeyword修飾的方法為“虛擬方法”

      [訪問修飾符] virtual [返回類型] 方法名(參數列表)

     {

     //虛擬方法的實現。該方法能夠被子類重寫

     }

     

public class MyBaseClass
    {
        public virtual void DoSomething()
        {
            Console.WriteLine("Base imp");
        }
    }
    public class MyDerivedClass : MyBaseClass
    {
        public override void DoSomething()
        {
            Console.WriteLine("MyDerived imp");
        }
    }
    重寫方法將替換類中的實現代碼。以下的代碼將使用新的版本號,即使這是通過基類類型進行的也是這樣:

    

    MyDerivedClass myObj=new MyDerivedClass();
    MyBaseClass myBaseBbj;
    myBaseObj=myObj;
    myBaseObj.DoSomething();
    結果例如以下:

    Derived imp

    basekeyword用於從子類中訪問父類成員。即使父類的方法在子類中重寫,仍能夠使用basekeyword調用。 並且。在創建子類實例時,能夠使用basekeyword調用父類的構造函數。

使用basekeyword僅僅能訪問父類的構造函數、實例方法或實例屬性,而不能訪問基類的靜態方法。


     

    


免責聲明!

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



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