簡體   English   中英

Java接口內部類

[英]Java Interface Inner Class

我還在用java編寫戰艦游戲。
我在模塊化方面遇到了麻煩:我需要使用接口構建數據類(模型)。
我得到的想法是建立一個這樣的類層次結構:

BattleGrid =>一些方法,Grid => int rows,int cols,Cell [] [] grid => char內容

這意味着:
1.公共類是BattleGrid類(提供外部方法的類,如initGrid(),placeShip()等...);
2.然后在里面有另一個類Grid,它包含材質網格和一些信息,如網格行和網格列;
在每個細胞內部,都有該細胞的內容。
(顯然所有人都有安裝者和/或吸氣劑)

問題是:當我通過BattleGrid接口寫這個時,內部類會自動聲明為public static。

這種結構的正確方法是什么?

這就是接口的工作方式。 公共界面中的所有內容都是公開的。 如果你有成員變量,它們將自動為靜態。 嘗試使用抽象類或將成員變量移動到實現類。

你的問題很廣泛,但我會試着回答它:最好盡量保持簡單:

  • 使你的接口頂級類(即在他們自己的文件中)
  • 除非必要,否則不要使用內部類(我懷疑他們會這樣做)

在設計界面時,請關注所需的外部功能,並完全忽略它的實現方式。

例如,如果您需要BattleGrid能夠在外部提供Grid ,則可以將它們聲明為與Grid getGrid();單獨接口Grid getGrid(); 作為BattleGrid一種方法。 在編寫BattleGrid實現時,您可以選擇通過將Grid實現作為BattleGrid的內部類來BattleGrid ,但這與BattleGrid接口沒有任何關系。

如果您不需要BattleGrid從外部提供Grid ,請不要在BattleGrid界面中提到Grid

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM