从超类到实例获取方法

时间:2017-06-29 16:39:47

标签: java inheritance

假设有一个A,B和C类以及一个接口BImpl。

在A中,我们通过BImpl创建一个B实例:

from aiohttp_devtools import cli; cli()

在B中,我们有一个方法getWords(),它从BImpl接口覆盖。这个方法从它的超类中调用retrieveLanguageDict()。

class A {

    BImpl bimpl;

    A() {
       bimpl = new B(); 
    }

    public void speak() {
        bimpl.getLanguage();
    }
}

我的问题是:如果我需要,我如何从A类调用方法retrieveLanguageDict()?

1 个答案:

答案 0 :(得分:-1)

该方法受到保护。它只能由类本身,它的子类和同一个包中的其他类调用。

最重要的是,A类正在使用BIPL接口。通过引用bimpl可访问的唯一方法是在Bimpl接口中声明的方法。

您可以通过使retrieveLanguageDict()成为界面成员,并将其访问控制权更改为public来解决问题。

也就是说,你也可以考虑retrieveLanguageDict()是否是BImpl的一些实现者的实现细节。如果是这样,从BImpl的实现之外调用它会更好 not