使用多态,出现了Java初始化无效的问题

前几天做一个项目,利用多态创建了一个对象,并对其传参了,但是调用其get方法的时候却发现其属性并没有被初始化。下面写了几个简单的例子来还原一下其具体情况:

这是父类ex

package tutorial1;
import java.util.ArrayList;

public class ex {
    private int a;
    private int b;

    public ex(int a, int b) {
        this.a = a;
        this.b = b;
    }

    public ex(){
        this(0, 0);
    }

    public int getA() {
        return a;
    }

    public int getB() {
        return b;
    }

    public void setA(int a) {
        this.a = a;
    }

    public void setB(int b) {
        this.b = b;
    }
}

这是子类ex1

package tutorial1;

public class ex1 extends ex {
    private int a;
    private int b;

    public ex1(int a, int b) {
        this.a = a;
        this.b = b;
    }

}

这是检测方法:

package tutorial1;

public class userEx {
    public static void main(String[] args) {
        ex obj = new ex1(88, 88);
        int a = obj.getA();
        int b = obj.getB();
        System.out.println(a);
        System.out.println(b);
    }
}

输出结果是:



最后发现问题其实就是子类中没有重写get方法,导致调用get方法的时候实际上是调用了父类方法,所以get到的是父类的属性值。新建对象的时候只是初始化了子类的属性值。这样自然就无法get到值了。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容