首页 > 解决方案 > Java - 方法继承的问题覆盖

问题描述

我在对象中遇到了下一个继承问题:

- 头等舱:

public class LegalPersonRest extends LegalPerson {}

-二等:

public class Company {

private List<LegalPerson> legalPersons;

}

-第三类:

public class CompanyRest extends Company {

@Override
public List<LegalPersonRest> getLegalPersons() {
    return super.getLegalPersons();
}

}

在这个方法 getLegalPersons 我得到了错误:试图使用不兼容的返回类型。

我不知道为什么 LegalPersonRest 会扩展 LegalPerson。

Company 和 LegalPerson 类是我的域。(层域)

CompanyRest 和 LegalPersonRest 类扩展了域的类。(层适配器)

如果我将 List 更改为 List,我认为是错误的,因为我需要使用 LegalPersonRest。

这种情况下正确的继承形式是什么?

问候,

标签: javaclassobjectinheritanceextends

解决方案


我只是要指出以防这是问题所在:超类需要具有您要覆盖的方法。Company没有方法getLegalPersons(),所以你不能覆盖它。但我认为Company确实有getLegalPersone(),因为您稍后会调用该方法(请生成一个最小的、可重现的示例)。接下来我能想到的是Company'sgetLegalPersons()方法不返回 a List<LegalPersonRest>。它可能会返回其他东西的列表,或者完全返回另一个对象。请检查返回类型是否与CompanyRest.


推荐阅读