有没有办法从超类访问子类元素?

mde*_*ino 0 java

我需要一个将在子类中使用的类中的方法,尽管该方法使用的是在子类中更改的属性。有没有一种方法可以访问子类的属性而不必重写该方法?

我已经尝试过使用该属性的吸气剂,但得到相同的结果。

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)

控制台显示:

超级方法:超级

超级方法:超级

预期结果是:

超级方法:超级

超级方法:子级

Mic*_*rry 5

我已经尝试过使用该属性的吸气剂,但得到相同的结果。

你确定吗?以下就是您所追求的:

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不能是私有的(否则它们不能从类外部访问),并且不能是静态的(否则它们是该类的一部分,而不是该类的任何实例)。