我有一个抽象类和一个扩展它的类,我在这两个类中都有一个同名的方法。 我想在抽象类的另一个方法中调用抽象类中的方法。从抽象类中调用另一种方法在实际类中具有相同名称
Controller.java
public abstract class Controller {
public Result delete(Long id) {
return this.delete(id, true);
}
public Result delete(Long id, boolean useTransaction) {
// do something and return result
}
}
FileGroup.java
public class FileGroup extends Controller {
public Result delete(Long id, boolean central) {
// do something
return super.delete(id);
}
}
super.delete
呼叫Controller.delete
但this.delete(id, true)
呼叫delete
在FileGroup
而不是调用Controller
delete
这是造成递归无限循环和堆栈溢出。
@aioobe这并不完全清楚。为什么OP不写'super.delete(id,central)'?这可能是OP实际上希望'FileGroup'中的'delete'来调用Controller中的一个参数'delete'方法,然后在Controller中调用两个参数'delete'而不会造成无限循环。 –
*“为什么OP没有写super.delete(id,central)?”* - 因为这是无意义的覆盖。 *“[...]没有造成无限循环。”* - 是的,这就是我所想的(这就是我在我的回答中所说的)。 – aioobe
由于//做某事,这不会是毫无意义的重写。 –