子类如何能够更改父类实例变量的值

时间:2017-02-16 07:23:00

标签: java

子类如何可以更改父类实例变量的值。我在子类中使用super.variable名称尝试了它但是当我打印parent.variable名称时我可以看到更改未反映在父变量中

1 个答案:

答案 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'
    }

}