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