我正在开发一个项目,为了便于使用,我希望能够创建一个扩展我的" Screen"然后从我的main方法初始化接口和屏幕类 -
//Screen Interface
public abstract interface Screen {
public abstract void init();
}
//Screen Implementation
public class Game implements Screen {
@Override
public void init() {
//Do stuff
}
}
//Main class
public class Main {
public static void main(String[] args) {
Screen s = new Screen();
s.init();
}
}
但这不起作用,因为你无法实例化一个抽象类。我本来试过的
Screen.init();
但除非它是静态的,否则你不能调用这样的方法。 我怎样才能做到我想要实现的目标?如果我不够清楚,请在评论中询问并不要标记,我会更新我的问题。
编辑:我知道我可以实例化Game类,但这不是重点。我试图在实现屏幕界面的每个类中运行init方法,所以我不必私下指定每个。
答案 0 :(得分:2)
为什么不
Game s = new Game ();
s.init ();
或者如果您实际使用Screen
接口,那么
Screen s = new Game ();
s.init ();
你也似乎对接口和抽象类感到困惑。你正在定义一个接口。您没有展开interfaces
,也无法实例化interface
如果您希望自动调用init
,我建议您将其添加为静态块或从您super
构造函数中调用
答案 1 :(得分:1)
在上面的代码中替换此行
Screen s = new Screen();
这一行:
Screen s = new Game();
这将起作用,因为OOP的动态绑定/运行时多态性功能。 在运行时,确定实现此方法的对象(init())。
答案 2 :(得分:-1)
您需要实例化Game
,而不是屏幕。