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");
        }
    }

  

posted @ 2022-04-27 16:59  willamyao  阅读(27)  评论(0)    收藏  举报