多态使用时的缺陷主要分两种情形
- “覆盖”
private
方法 - 调用域与静态方法
由于调用域和静态方法十分相似,先考虑调用域与“覆盖”private
方法的情形。我写了个四层继承关系的程序表现这种陷阱,如下
/*
* 继承关系:SubSubSub 继承 SubSub 继承 Sub 继承 HelloWorld
*/
public class HelloWorld {
public int field = 0;
public void f(){
System.out.println("Super.f()");
}
public static void main(String[] args) {
//4种不同的父类引用
HelloWorld fool1 = new SubSubSub();
Sub fool2 = new SubSubSub();
SubSub fool3 = new SubSubSub()