您的位置:首页 > 其它

【36】绝不重新定义继承而来的non-virtual方法

2013-12-27 18:42 344 查看
1、绝不重新定义继承而来的non-virtual方法,为什么?

  首先想想,non-virtual方法是干什么的?也就是说,它的使用场景。父类的non-virtual方法,其实就是告诉子类,继承实现,子类决定是否继承接口(也就是子类决定是否继续提供接口)。如果重新定义了non-virtual方法,就不符合它的使用场景。

2、如果想重新定义继承而来的方法,应该把父类方法修改为virtual方法,因为virtual方法的使用场景是:父类告诉子类,继承接口,修改实现。

3、如果重新定义了继承而来的non-virtual方法,会出现什么问题呢?

  因为non-virtual方法是静态绑定,也就是说,调用non-virtual方法的时候,根据对象的表面类型决议方法,我们知道一个对象的表面类型是可以变来变去的。这样,就表现出神经分裂的不一致行为。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: