假设有一个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()?
答案 0 :(得分:-1)
该方法受到保护。它只能由类本身,它的子类和同一个包中的其他类调用。
最重要的是,A类正在使用BIPL接口。通过引用bimpl
可访问的唯一方法是在Bimpl接口中声明的方法。
您可以通过使retrieveLanguageDict()
成为界面成员,并将其访问控制权更改为public
来解决问题。
也就是说,你也可以考虑retrieveLanguageDict()
是否是BImpl的一些实现者的实现细节。如果是这样,从BImpl的实现之外调用它会更好 not 。