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

来源:9-4 Java 中的继承初始化顺序

好鬼过瘾

2015-06-06 15:25

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回答

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

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

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

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

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


    dongbi...

    是不是可以说:在 Fighter中改了父类属性的值,只影响了子类,并不影响父类。??

    2016-01-29 16:25:38

    共 2 条回复 >

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

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

Java入门第二季 升级版

课程升级!以终为始告别枯燥,在开发和重构中体会Java面向对象编程的奥妙

530553 学习 · 6091 问题

查看课程

相似问题