Cannot override abstract method of superclass when subclass is in another package
在我的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
这是什么意思?是的,这些类位于不同的项目和不同的包中,但是这与继承有什么关系?这两种方法都是公共的。
下面是超类的代码:
1 2 3 4 5 6 7 8 9 10 11 | package com.emret.myPackage; //Some imports here public abstract class ThingsProvider { //Class code here abstract public void createThings(); } |
以下是子类:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | 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,但是在将其更改为public之后,错误并没有消失。
事实证明,只要引用的项目被完全成功地编译,引用项目中的引用就不会被更新。引用项目中的任何单个错误都会阻止成功编译,并且会阻止引用项目检测其更新的类信息。
我引用的项目有另一个错误。即使与上面的类完全分离,它也会阻止成功的编译,并阻止引用项目中的引用更新。
后台编译器并不像我希望的那样聪明。
我认为您正在使用Java 1.5,请转到Projt/Projes、Java编译器,并确保您至少使用Java 1.6。