继承与重写
重载与重写是C#面向对象的多态性的重要体现。
如下面的示例:
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace ConsoleApplication1 { public class A { public virtual void fun1() { Console.WriteLine("A.fun1"); } public void fun2(B test) { test.fun1(); fun1(); } } public class B:A { public new void fun1() { Console.WriteLine("B.fun1"); } } class Program { static void Main(string[] args) { A yktest = new B(); B test = new B(); yktest.fun2(test); Console.ReadKey(); } } }
该例中显式的用new关键字重写方法,因此不会对父类方法进行覆盖。运行结果会是B.fun1 A.fun1.
如果用关键字override则运行结果是B.fun1 B.fun1.