输出:
A
B
A.Fun()
B.Fun2()
A.Fun3()
1——
OVERRIDE和NEW的方法都必须是基类中VIRTUAL或ABSTRACT的方法
2——
OVERRIDE的方法是可以通过BASE前缀调用基类中被OVERRIDE的方法的
3——
NEW的方法是一个全新的方法,不能使用BASE前缀来调用基类中被NEW后的方法。
override-覆盖(旧的没有了)
new-新的(新旧共存)
new关键字就是终止该方法的虚拟性。比如:
class A { public abstract void func(){}; } class B:A { public override void func(){}; } class C:B { public new void func(){}; } |
那么,你可以:
A a = new B();
a.func();
但不能这么做:
A a = new C();
a.func();
而且也不能再override这个方法,因为这个方法已经被终止了虚拟属性,所以不能这样:
class D:C
{
public override void func(){};
}