在这里提到
A是预编译的Java类(我也有源文件)B是我正在创作的
B类扩展A.
如何实现逻辑,以便A可以调用B具有的方法.
以下是条件:
如上所述,如果需要,我可以修改A.无论哪种方式,可能的解决方案是什么?
Ale*_*lli 45
类A应该定义它要调用的方法(可能是抽象的,A应该是一个抽象类,根据Paul Haahr的优秀指南); B可以(事实上,如果方法是抽象的,必须是具体的)覆盖这些方法.现在,A当在B类实例中发生时,从其他方法调用这些方法将转到B的覆盖.
整体设计模式称为模板方法 ; 要重写的方法通常称为"钩子方法",执行调用的方法称为"组织方法".
Tim*_*mmm 15
是的,它看来,如果你重写超/基类的函数,调用这些函数在基类中必去的孩子/派生类.在我看来,这似乎是一个糟糕的设计,但你去了.
class Base
{
public void foo()
{
doStuff();
}
public void doStuff()
{
print("base");
}
}
class Derived extends Base
{
@Override
public void doStuff()
{
print("derived");
}
}
new Derived().foo(); // Prints "derived".
Run Code Online (Sandbox Code Playgroud)
显然所有Derived的方法都必须已经定义Base,但是否则(没有内省)这样做在逻辑上是不可能的.