java - 覆盖方法: how to "inject" into the super-method?

标签 java overriding method-invocation

假设三个类,一个是另一个的子类。每个都覆盖 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()时,这将导致一个方法 调用顺序如下:

  1. performFinalTask​​s();
  2. performMiddleTasks();
  3. performBaseTasks();

我想在 performMiddleTasks() 和之间引入 perfomFinalTask​​s() performBaseTasks()。我怎样才能做到这一点?

  1. performMiddleTasks();
  2. performFinalTask​​s();
  3. performBaseTasks();

最佳答案

在最终类 doStuffDifferently() 中编写一个公共(public)方法,并按该顺序调用这些方法。我不确定是否可以通过 doStuff() 方法中的任何其他技巧来做到这一点。

关于java - 覆盖方法: how to "inject" into the super-method?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14405303/

相关文章:

java - 将spark中的现有行添加到另一个数据集(Spark Java 2.3.1)

java - 我如何检查Java中是否存在变量?

Java JAR 文件依赖关系

java - 需要从我的应用程序进行非阻塞/异步方法调用

抽屉导航中的 Java.lang.NullPointerException

Java:初学者帮助获取变量

安卓 WebView : Override Contextual Action Bar

database - 交响乐 2 : Build own DB access layer

.net - 当用户单击 X(关闭程序)时,VB.NET 重载默认功能

java - Mockito RETURNS_SMART_NULLS 回答奇怪的行为