引用here
A是预编译的Java类(我还有源文件)B是我正在编写的Java类
B扩展了A。
如何实现逻辑,使A可以调用B拥有的方法。
以下是条件:
如上所述,如果需要,我可以修改A。无论哪种方式,可能的解决方案是什么?
发布于 2009-09-07 01:26:37
类A
应该定义它将要调用的方法(可能是抽象的方法,根据Paul Haahr的优秀的guide,A应该是一个抽象类);B
可以(实际上是具体的,如果方法是抽象的)覆盖那些方法。现在,当在类B的实例中发生时,从A
中的其他方法调用这些方法时,转到B的重写。
总体设计模式称为钩子(Template Method);要覆盖的方法通常称为“钩子方法”,执行调用的方法称为“组织方法”。
发布于 2012-11-22 18:43: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".
显然,Derived
的所有方法都必须已经在Base
中定义,但是如果不这样做(没有内省),在逻辑上是不可能的。
发布于 2009-09-07 01:31:10
如果这样做,我会比较犹豫。如果我错了,请纠正我,然后我会删除它,但听起来你想维护一个A对象和一个B对象。如果它们确实不是同一个物体,那么你不得不做的“捆绑在一起”(这是一个科学术语)将是相当丑陋的。
https://stackoverflow.com/questions/1387207
复制相似问题