java 不同包子类 覆盖_关于java:当子类在另一个包中时,不能覆盖超类的抽象方法...

在我的Android库项目中,我有一个公共抽象类myClass,其中包含抽象方法abstract public void my method()。

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

The method myMethod() of type MySubClass must override or implement a

supertype method

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

The method MySubClass.myMethod() does not override the inherited

method from MyClass since it is private to a different package

这是什么意思?是的,这些类位于不同的项目和不同的包中,但是这与继承有什么关系?这两种方法都是公共的。

下面是超类的代码:

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);

}

}

你能展示这两个方法/类定义吗?听起来它们有不同的返回类型/参数。

你确定他们都是公众吗?他们有public关键字吗?听起来超类的方法是package private,如果没有关键字,这是默认的可见性。例如,abstract void foo()是包私有的,只能由同一包中的类重写。

@托马斯:我已经更新了这个问题,将类代码包括在内。

你的结构对我来说很好,jre 1.7.0_07,有没有注释,所以我不知道该怎么说。

它似乎"伊莎维茨"指出了确切的痛点,但其他的局限性阻碍了它的发展。

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

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

我引用的项目有另一个错误。即使与上面的类完全分离,它也会阻止成功的编译,并阻止引用项目中的引用更新。

后台编译器并不像我希望的那样聪明。

调试它的荣誉!

我认为您正在使用Java 1.5,请转到Projt/Projes、Java编译器,并确保您至少使用Java 1.6。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值