我需要一个将在子类中使用的类中的方法,尽管该方法使用的是在子类中更改的属性。有没有一种方法可以访问子类的属性而不必重写该方法?
我已经尝试过使用该属性的吸气剂,但得到相同的结果。
public class SuperClass {
private static final String a = "Super";
public void superMethod(){
System.out.println("SuperMethod: " + a);
}
}
public class ChildClass extends SuperClass {
private static final String a = "Child";
}
public class Main {
public static void main(String[] args) {
SuperClass s = new SuperClass();
ChildClass c = new ChildClass();
s.superMethod();
c.superMethod();
}
}
Run Code Online (Sandbox Code Playgroud)
控制台显示:
超级方法:超级
超级方法:超级
预期结果是:
超级方法:超级
超级方法:子级
我已经尝试过使用该属性的吸气剂,但得到相同的结果。
你确定吗?以下就是您所追求的:
class SuperClass {
private String a = "Super";
public void superMethod() {
System.out.println("SuperMethod: " + getA());
}
public String getA() {
return this.a;
}
}
class ChildClass extends SuperClass {
private String a = "Child";
@Override
public String getA() {
return this.a;
}
}
public class Main {
public static void main(String[] args) {
SuperClass s = new SuperClass();
ChildClass c = new ChildClass();
s.superMethod();
c.superMethod();
}
}
Run Code Online (Sandbox Code Playgroud)
请注意,getter不能是私有的(否则它们不能从类外部访问),并且不能是静态的(否则它们是该类的一部分,而不是该类的任何实例)。