我有這個公共抽象類MyClass的與抽象方法抽象的公共無效myMethod的()在我的Android庫項目。不能覆蓋超類的抽象方法時,子類是在另一個包
我想在另一個項目中構建這個類的具體實現,這是一個應用程序項目並引用了庫項目。在子類中的方法實現標有「@覆蓋」和Eclipse使我有以下錯誤:
The method myMethod() of type MySubClass must override or implement a supertype method
我刪除「@覆蓋」和錯誤變成警告:
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);
}
}
你可以顯示兩個方法/類定義嗎?這聽起來像他們有不同的返回類型/參數。 – Thomas
你確定他們都是公開的嗎?他們有'公共'關鍵字嗎?這聽起來像超類的方法是包私有的,如果沒有關鍵字,這是默認的可見性。例如,'abstract void foo()'是包私有的,只能被同一包中的類覆蓋。 – yshavit
@Thomas:我已經更新了問題以包含課程代碼 –