我觉得,这跟子类中出现和父类同名的同类型成员变量是一个情况,应该不能覆盖.借楼上那位代码一用 稍作修改- class A
- {
- public class B
- {
- public void show(){
- System.out.println("我是父类的classB");
- }
- }
- //我把那个fashow()方法去掉了.直接在main中创建B的实例然后调用show方法.
- //用fashow的话,我觉得必然会先从本类成员B去创建实例,会产生误解,无法判断是否覆盖.
- //因为父类子类都有Class B.而fashow()方法也被复写了.
- }
- class C extends A
- {
- public class B
- {
- public void show(){
- System.out.println("我是子类的classB");
- }
- }
- }
- class Demo2
- {
- public static void main(String []args){
- C a = new C();//声明为C子类类型
- a.new B().show();
- A b = new C();//声明为A父类类型
- b.new B().show();
- //那么编译器会优先从声明的类型去调用成员.
- }
- }
复制代码 结果如下
|