日期:2014-05-20  浏览次数:20703 次

向下转与覆盖的问题
C c = new C();
((B)c).f();
C是B的子类,C中的f方法覆盖了B中的f方法,为什么执行的二行的时候调用的是C中的f方法?

------解决方案--------------------
B c = new C();
------解决方案--------------------
探讨
如果对象还是C的话
System.out.println(((B)c).a);
输出的却是B类中的a,这是为什么?

引用:

new的什么对象就是调用什么对象的方法。和你声明的引用类型没关系。