override/new区别

public class American : Men  //继承了Men
    {
        public override string Speak()    //override
        {
            return "美国人说英文";
        }
        public new string Eat()   //new
        {
            return "美国人吃西餐";
        }
    }

    public class Men  //父类
    {
        public virtual string Speak()
        {
            return "默认说中文";
        }

        public virtual string Eat()
        {
            return "默认吃米饭";
        }
    }

 

 American类重写了Men类的Eat,所以执行的是重写后的Eat方法;

 American类new了一个Eat方法,所以Men类的Eat不受影响,执行的还是原来的Eat;

总结:override会重写改变父类的方法,new 的话就不改变父类里的方法;

猜你喜欢

转载自www.cnblogs.com/stgp/p/13379359.html