Parent可以调用Child Class方法吗?

在这里提到

A是预编译的Java类(我也有源文件)B是我正在创作的Java类
B延伸A.

如何实现逻辑,以便A可以调用B具有的方法。
以下是条件:

  • 我不想触摸A(仅作为最后一个选项,但如果没有其他解决方案存在)。
  • 我不想用reflection。

如上所述,如果需要,我可以修改A.无论哪种方式,可能的解决方案是什么?

A类应该定义它要调用的方法(可能是抽象的,A应该是抽象类,根据Paul Haahr的优秀指南 ); B可以(事实上具体必须,如果方法是抽象的)覆盖那些方法。 现在,当在B类实例中发生时,从A其他方法调用这些方法转到B的覆盖。

整体设计模式称为模板方法 ; 要重写的方法通常称为“钩子方法”,执行调用的方法称为“组织方法”。

是的,似乎如果覆盖super / base-classes的函数,对基类中这些函数的调用将转到子/派生类。 在我看来,这似乎是一个糟糕的设计,但你去了。

 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定义,但是否则(没有内省)这样做在逻辑上是不可能的。

我宁愿犹豫不决。 如果我错了请纠正我然后我会删除,但听起来你想要保持A对象和B对象。 如果它们确实不是同一个对象,那么你必须要做的“捆绑在一起”(这是一个科学术语)会非常难看。