是否需要重写继承的getter方法?

时间:2019-05-07 01:40:50

标签: java inheritance

我想知道您是否创建一个具有与父类同名的字段的子类,在子类对象上调用的getter方法会访问它的字段还是父类的字段?还是需要再次编写并覆盖方法?

1 个答案:

答案 0 :(得分:0)

功能需要重新编写并覆盖。参见以下示例:

static class A {
    private int i = 0;

    public A() {
    }

    public A(int i) {
        this.i = i;
    }

    public int getI() {
        return this.i;
    }
}

static class B extends A {
    private int i;

    public B(int i) {
        this.i = i;
    }
}

public static void main(String[] args) {
    B b = new B(5);

    System.out.println(b.getI());
}

输出:0,因为它使用的是A.getI(),它引用了i中的A字段。

现在使用相同的代码,但是使用B.getI()

static class A {
    private int i = 0;

    public A() {
    }

    public A(int i) {
        this.i = i;
    }

    public int getI() {
        return this.i;
    }
}

static class B extends A {
    private int i;

    public B(int i) {
        this.i = i;
    }

    @Override
    public int getI() {
        return this.i;
    }
}
public static void main(String[] args) {
    B b = new B(5);

    System.out.println(b.getI());
}

输出:5