Parent par = new Child();//Child是Parent的子类 par.Function3();//Function3是在Parent里是虚方法,在Child里override,这里调用的实际上是Child里的Function3 //Child ch = new Parent();这样实例化,报错
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace ConsoleApplication1 { class Parent { public Parent() { Console.WriteLine("Parent"); } public void Function1() { Console.WriteLine("这是父类的方法"); } public virtual void Function2() { Console.WriteLine("这是第二个父类的方法"); } public virtual void Function3() { Console.WriteLine("这是父类的虚方法"); } public void Function4() { Console.WriteLine("Parent的Function4"); } } }
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace ConsoleApplication1 { class Child:Parent { public Child():base() { Console.WriteLine("Child"); } public new void Function2()//感觉加不加new都一样 { base.Function2(); Console.WriteLine("这是重写父类的方法"); } public override void Function3()//感觉加不加overide都一样 { Console.WriteLine("这是重写父类的虚方法"); } } }