有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

游戏引擎Java隐藏方法

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

现在如何向世界隐藏这种方法?我在寻找C++中的“朋友”方式。p>

这些类(引擎类和GameWindow类)在单独的包中

另外,我在其他一些引擎中找到了一种使用抽象类的方法,但如果可能的话,有人能告诉我怎么做吗


共 (1) 个答案

  1. # 1 楼答案

    你可以使用以下技巧:

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