我可以从父类的父类调用被重写的方法吗?



假设我有这三个类:

class Foo {
    void fn() {
        System.out.println("fn in Foo");
    }
}
class Mid extends Foo {
    void fn() {
        System.out.println("fn in Mid");
    }
}
class Bar extends Mid {
    void fn() {
        System.out.println("fn in Bar");
    }
    void gn() {
        Foo f = (Foo) this;
        f.fn();
    }
}
public class Trial {
    public static void main(String[] args) throws Exception {
        Bar b = new Bar();
        b.gn();
    }
}

是否有可能称一个Foofn() ?我知道我的解决方案在gn()不工作,因为this是指向类型的Bar的对象。

这在Java中是不可能的。你可以使用super,但它总是在类型层次结构的直接超类中使用方法。

还要注意:

Foo f = (Foo) this;
f.fn();

多态的定义虚调用是如何工作的:即使fFoo类型,但在运行时f.fn()被分派给Bar.fn()。编译时类型不重要

相关内容

  • 没有找到相关文章

最新更新