虚方法笔记
虚方法笔记
2011年09月01日
没用virtual时的情况:
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace ConsoleApplication1 { class Program { static void Main(string[] args) { B b = new B();//此时b的内容是:A.F()和B.F() A a = b; //此时a的内容是A.F() a.F(); b.F(); Console.Read(); } } //创建类A class A { public void F() { Console.WriteLine ("A.F()"); } } //创建类B 继承于A class B:A { public new void F() { Console.WriteLine("B.F()"); } } }
使用virtual
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace ConsoleApplication1 { class Program { static void Main(string[] args) { C c = new C();//此时a b c的内容是c.F() B b = c; A a = c; a.F(); b.F(); c.F(); Console.Read(); } } //创建类A class A { public virtual void F() { Console.WriteLine ("A.F()"); } } //创建类B 继承于A class B:A { public override void F() { Console.WriteLine("B.F()"); } } //创建类C 继承于B class C : B { public override void F() { Console.WriteLine("C.F()"); } } }