new 與override 區別

BaseC baseC=new BaseC ();
            baseC.Invoke();
            BaseC derivedC =new DerivedC ();  
            derivedC.Invoke();
            SuperA superA = new SuperA(); //new 必須申明也是本類
            superA.Invoke();
BaseC superA1 = new SuperA(); //申明是父類
superA1.Invoke();

 輸出如下: 

    BaseC
    DerivedC
    SuperA
    BaseC //申明是父類

new 隱藏父類,而申明必須也是子類纔可以。

public class BaseC
    {
        public int x;
        public virtual void Invoke() {
            Debug.WriteLine("BaseC");
        }
    }
    public class DerivedC : BaseC
    {
          public override void Invoke() {
            Debug.WriteLine("DerivedC");
        }
    }
    public class SuperA : BaseC
    {
        public new void Invoke()
        {
            Debug.WriteLine("SuperA");
        }
    }

  

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