请问 override 与 new 的区别 ???
public class Base
{
public virtual void test()
{
Console.WriteLine("这是父类方法!");
}
}
public class Class1:Base
{
public override void test()
{
Console.WriteLine("这是CLASS1方法");
//base.test();
}
}
public class Class2 : Base
{
public new void test()
{
Console.WriteLine("这是Class2方法!");
//base.test();
}
}
Base b = new Base();
Class1 class1 = new Class1();
Class2 class2 = new Class2();
b.test(); //输出 这是父类方法
class1.test(); //输出 这是CLASS1方法
class2.test(); //输出 这个 Class2 方法
---上面的结果 说明 override 和 new 有达到了 重写的目的
参考 msdn
Base[] b = new Base[2];
b[0] = new Class1();
b[1] = new Class2();
foreach (Base bb in b)
{
bb.test();
}
输出结果是 : 这是CLASS1方法
这是父类方法 //主要 是这里不明白,为什么 又是调用的父类方法呢 ,明明 实列化 的new class2()
请高手释疑???