如何在抽象类中执行java方法?

Posted

技术标签:

【中文标题】如何在抽象类中执行java方法?【英文标题】:How to execute java method in abstract class? 【发布时间】: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 语法。

【问题讨论】:

【参考方案1】:

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

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

super.my_method();

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

【讨论】:

您的建议可用于扩展 A 的 B 类。我需要从用 A 类编写的方法调用它。 @Hink:你不能那样做。如果你想从A类调用A类中的代码,把它放在一个final方法中,避免子类能够覆盖它。 好吧,我相信你,我必须和它和解。

以上是关于如何在抽象类中执行java方法?的主要内容,如果未能解决你的问题,请参考以下文章

怎样在java类中调用带参数的可执行文件(比如:.exe,.sh等等)?

学习Java第七周

java 抽象类和接口

Java 抽象

java面试题总结

JAVA 笔记