Java隐藏方法

时间:2015-12-06 21:31:38

标签: java game-engine

我正在用Java创建一个新的游戏引擎,我想为GameWindow类提供一些公共静态方法,如setTitle(),resize(),但我想再创建一个能够创建一个方法的方法整个窗口。这个方法只能由Engine的类访问,不允许开发人员创建窗口(所以这个方法只能由Engine在我正确的初始化时说出来)。

现在如何将这种方法隐藏起来?我正在寻找类似于"朋友"在c ++中的方式。

这些类(Engine和GameWindow类)位于不同的包中。

P.S。我在其他一些引擎中找到了一种抽象类的方法但如果有可能,有人可以解释一下如何做到这一点吗?

1 个答案:

答案 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(); 
}