Soyut bir sınıfım var ve bunu genişleten bir sınıf var, her iki sınıfta da aynı ada sahip bir yöntemim var. Soyut sınıfın başka bir yönteminde soyut sınıftaki yöntemi çağırmak istiyorum.Gerçek sınıftaki başka bir yöntemden başka bir yöntemden çağrı yöntemiyle gerçek sınıfta
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
arama Controller.delete
ancak this.delete(id, true)
yerine özyinelemeli sonsuz döngü neden ve taşmaları yığın olup Controller
içinde delete
çağrı FileGroup
çağrı delete
.
@aioobe Bu tamamen açık değil. OP neden "super.delete (id, central)" yazmıyor? OP'nin gerçekte, "FileGroup" da "Delete" yöntemini Controller'da çağırmak isteyip istemediğini söyleyebiliriz ki bu da Controller'da, 'Controller' içindeki iki argümanı sonsuz bir döngüye neden olmadan çağırır. –
* "OP neden süper.delete (id, central) yazmıyor?" * - Çünkü bu anlamsız bir geçersiz kılma olurdu. * "[...] sonsuz bir döngüye neden olmadan." * - Evet, bu benim varsaydığım şeydir (ve cevabımda buna cevap veriyorum). – aioobe
Bir şey yapmadan dolayı anlamsız bir geçersiz kılma olmaz. –