c#中利用new和override来控制virtual方法的版本
在继承类中,可以通过override和new来重写隐藏基类声明为virtual的方法
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace 版本控制 { class Program { static void Main(string[] args) { myderived md = new myderived(); md.met1(); md.met2(); md.met3(); Console.WriteLine(); mybase mb = (mybase)md; mb.met1(); mb.met2(); mb.met3(); } } class mybase//基类声明 { public virtual void met1()//基类的方法要以virtual声明,负责不能被继承类重写隐藏 { Console.WriteLine("基类met1"); } public virtual void met2() { Console.WriteLine("基类met2"); } public virtual void met3() { Console.WriteLine("基类met3"); } } class myderived : mybase { public override void met1()//以override重写的方法 { Console.WriteLine("继承类met1"); } public new void met2()//以new来显示隐藏的方法 { Console.WriteLine("继承类met2"); } public void met3()//不加修饰符,以重名方法隐式隐藏的方法 { Console.WriteLine("继承类met3"); } } }
可以看到当利用override重写后,即使将继承类转换为基类,调用的还是继承类的方法
利用new或隐式声明,则安照各自类的方法来调用


浙公网安备 33010602011771号