我在抽象类中有一个很大的方法doComplicateCalculation - AbstractClass。 还有一个扩展AbstractClass的小类Descendant。
我需要在方法doComplicateCalculation中引入一些小变化,如:
..............
if (val<0){
continue;
}
..................
问题还在于抽象类的内部类中的大方法。 怎么做? 感谢。
答案 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的类实现一个公共布尔值 验证
您甚至可以在整个算法之前或不同时间执行此操作。如果那是不可能的,你也可以覆盖这个方法(或者如果你可以将其分解,则覆盖方法的某些部分)。