나는 그것을 확장하는 추상 클래스와 하나의 클래스를 가지고 있는데, 두 클래스 모두에서 같은 이름의 메서드를 가지고있다. abstract 클래스의 다른 메서드에서 abstract 클래스의 메서드를 호출하려고합니다.실제 클래스에서 같은 이름을 가진 추상 클래스의 다른 메서드에서 메서드 호출
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)
대신 재귀 무한 루프를 유발하고 스택 오버 플로우된다 Controller
에 delete
전화의 통화에 FileGroup
delete
.
@aioobe 전적으로 명확하지 않습니다. 왜 OP는'super.delete (id, central)'를 쓰지 않았을까? 그것은 OP가 실제로'FileGroup'에서'delete'를 원할 경우 Controller에서 한 개의 인자'delete' 메쏘드를 호출 할 것입니다. 그리고 무한 루프를 일으키지 않고'Controller'에서 두 개의 인자'delete'를 호출합니다. –
* "왜 OP가 super.delete (id, central)를 쓰지 않았습니까?"* - 이는 무의미한 무시가되기 때문입니다. * "[...] 무한 루프를 일으키지 않습니다."* - 예, 그렇게 생각합니다. – aioobe
'/ do something' 때문에 무의미한 오버라이드는 아닐 것입니다. –