【问题标题】:How to call a method in a class hierarchy?如何调用类层次结构中的方法?
【发布时间】:2012-01-13 07:16:15
【问题描述】:

我有这个从另一个类扩展而来的超类

public abstract class AbstractDOEMessageFinderAction extends BasicObjectFinder {

    public Object performBasicSearch() {

        // works fine because getQuery is defined in BasicObjectFinder
        return getQuery(); 
    }

另一个类是ISIRFinderAction,它扩展自AbstractDOEMessageDashboardAction

ISIRFinderAction extends AbstractDOEMessageDashboardAction {

    // My aim is to make sure this method works so that I will make
    // the super class's performBasicSearch() method abstract.

    public Object performBasicSearch() {

        // this one doesnt even compile but it extends AbstractDOEMessageDashboardAction
        // which in turn extends BasicObjectFinder
        return getQuery();

    }

}

我错过了什么吗?为什么getQuery 不起作用。我认为它会在类层次结构中搜索它。

【问题讨论】:

  • 请正确格式化您的问题。
  • 好吧。现在它的格式
  • 编译失败时的编译信息是什么?
  • getQuery 好像没有在任何地方实现?它在 BasicObjectFinder 中也是抽象的吗?
  • 当你不输入return时它不会编译。

标签: java polymorphism subclass superclass class-hierarchy


【解决方案1】:

第二个类扩展 AbstractDOEMessageDashboardAction 而不是 AbstractDOEMessageFinderAction

【讨论】:

  • 你是对的,但是当你使用 getQuery() 时,如果它在超类上找不到它,它不应该从类层次结构中获取它应该上升一个类并在那里搜索等等。
  • 我在您的类层次结构中看不到从 AbstractDOEMessageDashboardActionBasicObjectFinder 的连接。
【解决方案2】:

AbstractDOEMessageDashboardAction 是否也扩展BasicObjectFinder

(注意,AbstractDOEMessageDashboardAction 当然与AbstractDOEMessageFinderAction 不同)。

【讨论】:

  • 对不起。我又编辑了一遍。我不是复制粘贴。这就是问题所在。没有 AbstractDOEMessageFinderAction。相反,它是 AbstractDOEMessageDashboardAction
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-12-23
  • 2015-05-31
相关资源
最近更新 更多