用new修饰的方法,在编译期按变量类型调用
所以:
Number number = new IntNumber();
number.ShowInfo();
会显示"base class---"
- class Number
- {
- public static int i = 123;
- public virtual void ShowInfo()
- {
- Console.WriteLine("base class---");
- }
- public virtual void ShowNumber()
- {
- Console.WriteLine(i.ToString());
- }
- }
- class IntNumber : Number
- {
- new public static int i = 456;
- public new virtual void ShowInfo()
- {
- Console.WriteLine("Derived class---");
- }
- public override void ShowNumber()
- {
- Console.WriteLine("Base number is {0}", Number.i.ToString());
- Console.WriteLine("New number is {0}", i.ToString());
- }
- }
- class Test_Number
- {
- public static void Main()
- {
- Number num = new Number();
- num.ShowNumber();
- IntNumber intNum = new IntNumber();
- intNum.ShowNumber();
- intNum.ShowInfo();
- Number number = new IntNumber();
-
- number.ShowInfo();
-
- number.ShowNumber();
- Console.Read();
- }
- }
发表于 @ 2008年08月28日 20:16:00|评论(loading...)|收藏