c#中new修飾子類方法的兩種用法

在C#中,在子類中可用new修飾一個方法,一般的資料對new 修飾符的功能說明,往往只是說明用來在子類中隱藏父類的相同方法(相同的方法名和相同的簽名),這樣,對於同一個方法而言,用子類的實例對象來調用時,執行的是子類中定義的新方法,實現了在子類中隱藏父類方法。但真的如果僅僅只是這樣嗎?在子類中使用New修飾符來修飾父類中的相同方法的作用,除了被隱藏了的父類方法之外,還可以通過類轉換來調用被隱藏了的方法,這樣,子類對象既也可以使用自身新定義的方法,也可以變相使用已被隱藏的父類的方法,提高了編程的靈活性,增強了類的功能。

 

請看以下代碼,類B是類A的一個子類,在其中用new 修飾符重新義了方法f,在main方法中用子類B實例化了一個對象b,並執行了子類B新建的f方法,並通過類型轉換調用了其父類A類的f方法。

 class A
    {
        public int i;
        public A()
        {
            i = 0;
        }
        public void f()
        {
            i ++;
        }
    }
    class B : A
    {
        public new void f()
        {
            i--;
        }
    }

static void Main()
 {
   class B b=new B();
   b.age=10;
   b.f().;
   ((A)b).f();

 Console.WriteLine(b.i);

}

此時顯示10.

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章