抽象超类中后代类的Java调用方法

时间:2011-09-22 19:28:46

标签: java class abstract

我在抽象类中有一个很大的方法doComplicateCalculation - AbstractClass。 还有一个扩展AbstractClass的小类Descendant。

我需要在方法doComplicateCalculation中引入一些小变化,如:

..............
if (val<0){
   continue;
 }
..................

问题还在于抽象类的内部类中的大方法。 怎么做? 感谢。

3 个答案:

答案 0 :(得分:2)

这可能不是最好的答案;但这是我能提供的最佳答案。如果有的话,它会让你思考如何解决这个问题(因为如果你要编程一段时间,那么这不会是你最后一次遇到这样的问题)。

在你的抽象类中,把它放在:

if (doContinue(val)){
   continue;
}

然后,在抽象类中定义方法......

protected boolean doContinue(int val) {
  // Or, put return true if you always want it to do this
  return false;
}

然后,在你的具体类中重写这个方法,就像这样...

protected boolean doContinue(int val) {
  return val < 0;
}

答案 1 :(得分:0)

你需要分解大块的方法,以便你可以覆盖你需要的部分。

答案 2 :(得分:0)

这是一个难以回答的问题。您可以做的一件事是尝试尽可能地在doComplicateCalculation中分解算法。要添加验证,可以使每个扩展doComplicateCalculation的类实现一个公共布尔值 验证

您甚至可以在整个算法之前或不同时间执行此操作。如果那是不可能的,你也可以覆盖这个方法(或者如果你可以将其分解,则覆盖方法的某些部分)。