如果是隐藏基类的话后民的子类就不能够再进行重写了,而且还有一个问题就是,当使用对象基类部分的引用调用一个覆写方法的时候,方法的调用沿被派生层次向上回溯,一直到被标记为override的方法的最新派生版本位置。如果在更高的派生级别有该方法的其它声明,但是没有被标记为override,比如是用new关键字来修饰,那么他们不会被调用
上面的举例:有三个类A/B/C,关系为C继承B,B继承A。A中有一个用virtual标记的虚方法M,在B中通过override来重写了这个M方法。C中分别使用用override来重写M方法以及用new关键字来隐藏该方法。最后声明一个C的实例成员c1,将其转换成A类型,即:A a = (A)c1; 通过实例对象a来调用M方法【a.M()】,结果为:C类中通过override重写M方法的时候,执行的是C类中重写的方法;而通过 new 关键字来隐藏M方法时,执行的确实B类中重写后的M方法。 |