我有这个抽象的超类:
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'必须被宣布为抽象的或实现抽象方法" launchMedia(MediaFile)'在' MediaListActivity'
我明白为什么会这样。但确实如此!不是吗?我检查过签名是否匹配;我已经尝试过Option + Return来让IDE建议修复;什么都行不通。
这只是Android Studio的一个错误吗?或者我做错了什么?
现在碰巧这些类在不同的包中:子类VideoListActivity位于"子包中," foo.bar.baz.video
,而超类MediaListActivity位于包foo.bar.baz
。
如果我将VideoListActivity移到foo.bar.baz
包中,错误就会消失。但是我有几个这些具体的子类,我不想把它们与顶级包混为一谈:我喜欢它们组织成它们的子包。我该怎么做才能使这个错误消失(假设它甚至是必要的)?
答案 0 :(得分:2)
答案是确保方法launchMedia()
的实现可以在其包之外访问:即它必须是protected
或public
。我以为我已经尝试过了,但我可能一直在寻找错误的方法。无论如何,这会使错误消失。