从父类的非静态方法调用子类的静态方法

时间:2016-07-12 18:13:28

标签: java inheritance polymorphism static-methods

假设我有以下简单代码:

class A {

    protected int someMethod() {
        return staticMethod();
    }

    private static int staticMethod() {
        return 10;
    }

}


class B extends A {

    protected int someMethod() {
        return super.someMethod();
    }

    public static int staticMethod() {
        return 20;
    }

}

class TestX {

    private void main() {

        B b = new B();

        int finalValue =b.someMethod();

    }
}

在上面的代码中,当执行b.someMethod()时,它最终会调用A的{​​{1}}版本。但我认为基于主对象的引用类型调用静态方法。由于调用staticMethod()的对象属于someMethod()类型,因此B的版本B不应被调用staticMethod() }} A被调用(因为行someMethod())?

鉴于上述代码,我是否有办法让return super.someMethod(); B执行,以便返回20而不是10?

我发现了一个类似的问题,但我认为其中提出的想法与我无关:

Calling subclass's static method from parent class

0 个答案:

没有答案