【问题标题】:how to override and use the parent class method in child classes如何在子类中覆盖和使用父类方法
【发布时间】:2019-04-04 17:48:34
【问题描述】:

我有如下图所示的类层次结构,并且在 A 类(假设)中定义了一个非抽象方法,而后继类(D、E、F、G、H、I)正在调用相同的方法。

这些类在 api 中,所以我不能对它们进行更改,但我想覆盖在 A 类中定义的 myMethod 并且还想要 D、E、F、G、H 类,我应该调用新的覆盖方法。我正在使用 spring 4。我可以在不覆盖所有死者类的情况下进行此更改吗?我没有任何选项可以更改 D、E、F、G ......我使用的是 java 8,spring 4。

       A (non abstract myMethod)A is Abstract class
      /   \
    B       C 
    /\      / \ \ \
   D  E    F  G H I

【问题讨论】:

  • 你说的方法标记为final吗?
  • 不,它不是最终方法。
  • 您是否可以选择更改 D,E,F ... 不是很清楚。你能澄清一下吗?
  • 不,我没有任何选项可以对 D、E、F 进行任何更改...
  • 为什么不重写 BC 中的方法呢?这不是可取的吗?

标签: java spring spring-mvc aop


【解决方案1】:

既然你提到你已经依赖于 spring,你可以使用 spring-aop 来做到这一点。步骤如下:

  • 为您的方法 myMethod() 声明一个环绕切入点
  • 为被覆盖的方法编写任何你想要的逻辑。
  • 不要调用“joinPoint.proceed();”

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-05-11
    • 1970-01-01
    • 2021-05-03
    • 2017-11-18
    • 1970-01-01
    • 1970-01-01
    • 2017-11-11
    • 2020-11-04
    相关资源
    最近更新 更多