假设三个类,一个是另一个的子类。每个都覆盖 parent 的方法。
public class BaseClass {
public void doStuff() {
performBaseTasks();
}
}
public class MiddleClass extends BaseClass {
// {BaseClass} Overrides
public void doStuff() {
performMiddleTasks();
super.doStuff();
}
}
public class FinalClass extends MiddleClass {
// {BaseClass} Overrides
public void doStuff() {
performFinalTasks();
super.doStuff();
}
}
当调用new FinalClass().doStuff()
时,这将导致一个方法
调用顺序如下:
performFinalTasks();
performMiddleTasks();
performBaseTasks();
我想在 performMiddleTasks()
和之间引入 perfomFinalTasks()
performBaseTasks()
。我怎样才能做到这一点?
performMiddleTasks();
performFinalTasks();
performBaseTasks();
最佳答案
在最终类 doStuffDifferently() 中编写一个公共(public)方法,并按该顺序调用这些方法。我不确定是否可以通过 doStuff() 方法中的任何其他技巧来做到这一点。
关于java - 覆盖方法: how to "inject" into the super-method?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14405303/