子类继承父类,不能够修改父类属性,只能调用最初继承父类属性的值

461 阅读1分钟
package com.easy.houserent;
public class A {
    int num;
    public int getNum() {
        return num;
    }
    public void setNum(int num) {
        this.num = num;
    }
    public void loop(){
        A1 a1 = new A1();
        a1.set();
        System.out.println(a1.getNum());
//        setNum(10);
//        System.out.println(getNum());
    }
    ```
package com.easy.houserent;

public class A1 extends A {
    public void set(){
        A a = new A();
        a.setNum(10);
    }

//    public static void main(String[] args) {
//        A1 a1 = new A1();
//        a1.set();
//        System.out.println(a1.num);
//    }
}
public static void main(String[] args) {
    A a = new A();
    a.loop();
}

}

通过这段代码我想完成的事情是:通过子类中的方法去修改父类的 属性值 然后再在父类写一个方法,调用子类中的方法,然后去get到父类中的属性值并输出。

首先这是错误的想法,不能够修改父类,只能继承父类的属性和方法,或者在子类中更改属性或者重写方法。即使用super.num = 10;修改属性,也只能在子类中使用。也不可能去修改父类中的属性。a.getNum()得到的属性,也只不过是A1继承A的 最初属性值。

那么怎么避免呢?

image.png