我还在用java编写战舰游戏 我在模块化方面遇到了麻烦:我需要用接口构建数据类(模型) 我得到的想法是建立一个这样的类层次结构:
BattleGrid =>一些方法,Grid => int rows,int cols,Cell [] [] grid => char内容
这意味着:
1.公共类是BattleGrid类(提供外部方法的类,如initGrid(),placeShip()等...);
2.然后在里面有另一个类,Grid,它包含材质网格和一些信息,如网格行和网格列;
3.在每个细胞内部,都有该细胞的内容
(显然所有人都有制定者和/或吸气者)
问题是:当我通过BattleGrid接口写这个时,内部类会自动声明为public static。
这种结构的正确方法是什么?
答案 0 :(得分:2)
这就是接口的工作原理。公共界面中的所有内容都是公开的。如果你有成员变量,它们将自动为静态。尝试使用抽象类或将成员变量移动到实现类。
答案 1 :(得分:0)
您的问题相当广泛,但我会尝试回答:最好尽量保持简单:
答案 2 :(得分:0)
在设计界面时,请关注所需的外部功能,并完全忽略它的实现方式。
例如,如果您需要BattleGrid
能够在外部提供Grid
,则可以将它们声明为Grid getGrid();
的单独接口作为BattleGrid
中的方法{1}}。在编写BattleGrid
实现时,您可以选择通过将Grid实现作为BattleGrid
中的内部类来实现它,但这与BattleGrid
接口没有任何关系。
如果您不需要BattleGrid
从外部提供Grid
,请不要在Grid
界面中提及BattleGrid
。