多态的缺陷

缺陷一:覆盖私有方法

代码:

原因:

可能我们期望的是输出:public f()

由于private被自动认为是final方法,且对导出的类是屏蔽的。因此,Derived类中f()方法是一个全新的方法。

结论:

只有非private方法才可以被覆盖。但是还需密切注视private方法,虽然编译器不暴错,但未必按照我们的想法执行。在导出类中,对基类中private方法,最好不要采用不同的名字。

缺陷二:域

代码:

 原因:

当Sub对象转为Super引用时候,任何域访问操作都将由编译器解析,因此不是多态。

缺陷三:静态方法

代码:

 

结论:

静态方法中,多态无效。

posted @ 2015-10-29 21:13  自相矛盾  阅读(368)  评论(0编辑  收藏  举报