问答详情
源自:9-4 Java 中的继承初始化顺序

为什么我在子类中修改父类的属性值,子类属性值也一同修改?

public class Fighter extends Card {

public Fighter(){

System.out.println("1 super role: " + super.role);

System.out.println("1 figher role:" + role) ;

role=3;

System.out.println("2 figher role:" + role) ;

System.out.println("2 super role: " + super.role);

}

}

输出结果为:

1 super role: 5

1 figher role:5

2 figher role:3

2 super role: 3

Fighter继承Card,我修改super.role的值,会导致子类的role值也改变???

提问者:好鬼过瘾 2015-06-06 15:25

个回答

  • Wang_Yu
    2015-06-06 23:48:51
    已采纳

    属性是不能被覆盖或者重写的。

    所以无论是this.role还是super.role 访问的都是同一个属性。

    你对这个属性进行了操作 当然会出现这种情况。

    如果子类中有和父类同名的属性时候,this.role和super.this才会有区别。


  • demo_h
    2015-06-06 22:15:25

    子类继承父类的非私有属性,所以当你重新定义了父类中的属性时,再次调用时肯定显示修改后的值