我了解到,当一个对象与另一个对象紧密关联时,将使用内部类。因此,LinkedList类可能包含一个内部Node类,因为每个Node仅存在于其LinkedList中。
[我正在考虑制作游戏,并正在考虑制作一个Map对象,该对象具有两个Tiles数组,其中每个Tile是一个内部类。
但是后来我真的认为Map类应该是Game类内部的一个内部类。
因此我们有
class Game {
class Map {
Tile[][] grid;
class Tile {
...
}
...
}
class Unit {
...
}
class Player {
...
}
...
}
但是,这似乎是多余的,因为它只会生成一个庞大的文件。这有问题吗?还是我完全误解了内部类的观点?
[选择新的内部类或外部类时应该考虑哪些因素,如果选择是内部的,内部类何时应为static
?
何时使用内部类既是一门艺术,也是一门科学。基本上看一下代码文件的大小以及每个类的大小。如果一个类又大又复杂,它应该放在自己的文件中。如果它很小(例如,侦听器接口的单个函数实现)并且不太可能在其他地方重用,则它应该是内部类。
实际上,重复使用可能是最重要的标准之一。任何可以重复使用的东西都应该重新使用,并且应该在适当范围内进行启用。
内部类的一个重要优点是它们可以帮助封装,从而使类的内部实现保持内部状态。如果其他类不需要了解您的内部类(或者在某些情况下甚至知道它们的存在),那么这就是它们成为内部的绝佳原因。
这不是'太多'的问题,至少直到您达到某个严格的极限为止。这是一个可以合理地说属于什么内部的问题。映射将始终具有条目,该条目可以是内部类。游戏不会总是有地图,因此地图不应该在游戏内部。
我要问的问题是'内在阶级本身对一个概念是否有意义?”类型Map
的对象是否有意义,或者Game.Map
是否增加了显着值?
我个人认为Map
有意义,因此应该是外部类。然后,您可以使用名称空间指定Game和Map的紧密关系。
在您要实现的游戏示例中,y。地图和图块可以是适当的数据结构,而不是单独的内部类。将它们作为类有什么具体要求?
我个人认为,内部类只是无用的,并且会导致设计不良,使用不应被授予的访问权限,从而使代码不清楚。只是忘记了。
(当然,我个人认为)