我有这个抽象父类(super class):
public abstract class MediaListActivity extends Activity {
...
abstract void launchMedia(MediaFile mediaFile);
}
和具体的子类:
public class VideoListActivity extends MediaListActivity {
...
void launchMedia(MediaFile mediaFile) {
// TODO: implement launchMedia()
}
}
在VideoListActivity子类的第一行,Android Studio报错
Class 'VideoListActivity' must either be declared abstract or implement abstract method 'launchMedia(MediaFile)' in 'MediaListActivity'
我明白为什么会这样。但确实如此!不是吗?我检查过签名是否匹配;我试过 Option+Return 让 IDE 提出修复建议;什么都没用。
这只是 Android Studio 的一个错误吗?还是我做错了什么?
现在碰巧这些类在不同的包中:子类 VideoListActivity 在“子包”foo.bar.baz.video
中,而父类(super class) MediaListActivity 在包 中>foo.bar.baz
.
如果我将 VideoListActivity 向上移动到 foo.bar.baz
包中,错误就会消失。但是我有几个这样的具体子类,我不想用它们弄乱顶级包:我喜欢将它们组织到它们的子包中。我该怎么做才能消除此错误(假设它甚至是必要的)?
最佳答案
答案是确保方法 launchMedia()
的实现可以在其包外访问:即它必须是 protected
或 public
。我以为我已经尝试过了,但我可能一直在寻找错误的方法。无论如何,这会使错误消失。
关于java - 错误 : "class must implement abstract method X", 但它已经发生了,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31954950/