当前位置: 首页 > 知识库问答 >
问题:

当子类在另一个包中时,无法重写超类的抽象方法

樊飞飙
2023-03-14

我试图在另一个项目中构建这个类的具体实现,该项目是一个应用程序项目,并引用了库项目。子类中的方法实现标记为“@override”,Eclipse给出了以下错误:

MySubClass类型的方法myMethod()必须重写或实现一个超类型方法

我删除“@override”,错误变成警告:

package com.emret.myPackage;

//Some imports here

public abstract class ThingsProvider {

//Class code here

    abstract public void createThings();

}
package com.emret.myPackage.subPackage;

//Some imports here

public class SmallThingsProvider extends ThingsProvider {

//Class code here

    @Override
    public void createThings() {
        createThing(0, R.drawable.cat, R.raw.cat);
        createThing(1, R.drawable.dog, R.raw.dog);
        createThing(2, R.drawable.cow, R.raw.cow);
        createThing(3, R.drawable.sheep, R.raw.goat);
        createThing(4, R.drawable.bicycle, R.raw.bicycle);
    }
}

共有1个答案

司英飙
2023-03-14

似乎“Yshavits”指出了确切的痛点,但其他限制阻碍了这一过程。

我的抽象方法一开始是包私有的。当我在子类中遇到错误时,我将其更改为public,但将其更改为public,错误并没有消失。

事实证明,只要被引用的项目被完全成功地编译,引用项目中的引用就不会更新。引用项目中的任何一个错误都会阻止成功编译,并阻止引用项目检测其更新的类信息。

 类似资料:
  • 我的类KTree正在扩展抽象类GraphClass,但无法重写GraphClass中定义的一个方法。 原始方法添加(E E,V V,V v1)在界面无向图中定义 在类中,addEdge(E E,V V,V v1)抛出错误 “KTree”中的“addEdge(E,V,V)”与“GraphClass”中的“addEdge(E,V,V)”冲突;两种方法具有相同的擦除,但都不重写另一种方法 KTree中的

  • 问题内容: 如何在C ++中创建一个抽象类,该抽象类具有一些我想在子类中重写的抽象方法?该文件应如何显示?是否有一个,如果是的话,应该看起来如何? 在Java中,它看起来像这样: 对于我来说,将此代码转换为C ++就足够了。 编辑: 我创建了代码,但是当我尝试遍历对象时,出现以下错误: 使用此代码: 问题答案: 在Java中,除非您声明了所有方法,否则默认情况下所有方法都是默认方法。在C ++中,

  • 我有一个基类,它定义了类方法,用于返回用于构建服务url的各种信息。基类还定义了一个用于构建该url的实例方法。我希望基类有这个方法的默认实现,这样当我需要url不同时,我只需要在子类中重写它。我如何让这个基方法调用重写的类方法来使用子类中的类方法构建url?下面是我现在的代码,但它不起作用: 基类方法: op ationId、operationVersion和方法类型是在子类中实现的类方法,但是

  • 下面是解释我的情况的基本框架代码。 这是超级抽象类: 这是超级抽象类的一个子类:(注意,我删除了其他函数,比如构造函数和方法,以缩短文章的篇幅 我想在抽象类中使用这种公共无效支付(int金额)方法;然而,超级抽象类Person不会接受支付(付款),因为该方法不在范围内。如何使这个工作? 谢谢~

  • 我是java初学者,我不理解这行代码是什么意思 平均值。为什么不能访问自己的方法。请详细解释如果类A正在实例化,那么为什么它的方法不可访问。