为了账号安全,请及时绑定邮箱和手机立即绑定

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

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值也改变???

正在回答

2 回答

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

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

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

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


0 回复 有任何疑惑可以回复我~
#1

好鬼过瘾 提问者

非常感谢!
2015-07-23 回复 有任何疑惑可以回复我~
#2

dongbian

是不是可以说:在 Fighter中改了父类属性的值,只影响了子类,并不影响父类。??
2016-01-29 回复 有任何疑惑可以回复我~

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

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

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

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信