我正在用Java创建一个新的游戏引擎,我想为GameWindow类提供一些公共静态方法,如setTitle(),resize(),但我想再创建一个能够创建一个方法的方法整个窗口。这个方法只能由Engine的类访问,不允许开发人员创建窗口(所以这个方法只能由Engine在我正确的初始化时说出来)。
现在如何将这种方法隐藏起来?我正在寻找类似于"朋友"在c ++中的方式。
这些类(Engine和GameWindow类)位于不同的包中。
P.S。我在其他一些引擎中找到了一种抽象类的方法但如果有可能,有人可以解释一下如何做到这一点吗?
答案 0 :(得分:0)
您可以使用以下技巧:
class GameWindow {
GameWindow() {...}
protected void methodOnlyforEngine() {...}
...
}
class Engine {
private class GameWindowProxy extends GameWindow {
GameWindowProxy(GameWindow ex) { super();...}
}
private final GameWindowProxy proxy;
Engine(GameWindow window) {
proxy = new GameWindowProxy(window);
}
...
proxy.methodOnlyforEngine();
}