子类如何可以更改父类实例变量的值。我在子类中使用super.variable名称尝试了它但是当我打印parent.variable名称时我可以看到更改未反映在父变量中
答案 0 :(得分:1)
使用parent.variable
更新父变量是对OOP的错误想法。当你扩展父类时,想想你的子类与父类成为一个,它们不再分开,所以想想这个变量从现在起就是孩子了。但只是切片差异是public
private
定义,它们设置了每个类项的可见性。因此,在下面的示例中,我只为父级定义了一个私有变量,因此孩子无法看到它,但是孩子能够通过公共getter setter更新变量。这是因为我们使用getter和setter来提供封装,因为它只与Parent类相关。请调查代码以了解更多信息:
class Main {
public static class Parent {
private int variable;
public int getVariable() {
return variable;
}
public void setVariable(int variable) {
this.variable = variable;
}
}
public static class Child extends Parent {
private int childVadiable;
public Child() {
}
public int getChildVadiable() {
return childVadiable;
}
public void setChildVadiable(int childVadiable) {
this.childVadiable = childVadiable;
}
public void updateParentVariable(int value) {
this.setVariable(value);
}
}
public static void main (String[] args) {
Child child = new Child();
child.updateParentVariable(5);
System.out.println(child.getVariable());
//Result it '5'
}
}