【问题标题】:How to execute java method in abstract class?如何在抽象类中执行java方法?
【发布时间】:2014-10-30 14:25:13
【问题描述】:

我在抽象类中有一个方法,可以在扩展类中覆盖或不覆盖。我想调用原始(未覆盖)方法。如何参考?示例:

public abstract class A{

  protected MyResult my_method(){
    MyResult myResult;
    ...
    ... // Default implementation
    ...
    return myResult;
  }

 ...

 private void xy(){
   // I'd like to call my_method here
   if(!my_method().test()){
     // The function is not implemented well, I want ot use the original (abstract) method
     ...
     ... log a message for programmer
     ...
     this::A.my_method(); // I need something like this
   }
 }
}

我不需要任何建议如何以不同的方式做到这一点。我只问是否有用于引用原始类或远距离超类中的方法或属性的 java 语法。

【问题讨论】:

    标签: java class reference this ancestor


    【解决方案1】:

    我想调用原始(未覆盖)方法。

    你不能在子类外部做到这一点。从子类本身,你可以调用

    super.my_method();
    

    它将始终调用超类实现,即使它已在此类中被覆盖。但是能够在子类之外执行此操作会减少封装。

    【讨论】:

    • 您的建议可用于扩展 A 的 B 类。我需要从用 A 类编写的方法调用它。
    • @Hink:你不能那样做。如果你想从A类调用A类中的代码,把它放在一个final方法中,避免子类能够覆盖它。
    • 好吧,我相信你,我必须和它和解。
    猜你喜欢
    • 2018-09-23
    • 1970-01-01
    • 2011-12-01
    • 2014-11-25
    • 2016-05-10
    • 2012-09-19
    • 2012-01-09
    • 1970-01-01
    • 2012-09-21
    相关资源
    最近更新 更多