是否存在在Java中使用内部类而不是子类更有利的情况(反之亦然)?根据我目前的理解,内部类可以访问外部类的字段和方法。这与使用继承有什么不同?
子类通常可以访问标记为public和protected的所有字段/方法。可以使用getter方法在子类中访问父类中标记为private的字段。基于我迄今为止看到的内容,当方法被标记为私有时,它们通常在类的其他方法中被调用,这些方法被标记为public或protected。当然,我不是一个经验丰富的Java程序员,但这似乎是大势所趋。
根据我目前的理解,选择一方与另一方之间似乎没有任何好处。有人可以让我深入了解为什么以及何时应该使用内部类而不是继承(或反之亦然)?
答案 0 :(得分:5)
如果使用继承,则定义" is-a"两个班级之间的关系。也就是说,ChildClass
是 ParentClass
。
另一方面,内部类并不总是与外部类直接相关。拥有内部类的主要原因是外部类使用其功能而不让其他类知道它。
我能想到的最好的例子是LinkedList
。它使用某种私有Node
类来存储每个元素的内容。当然,单个Node
不是LinkedList
...但LinkedList
除非Nodes
由LinkedList
组成,否则无法正常工作。除了Node
之外,任何类都没有理由知道var listItemCode
类存在。
答案 1 :(得分:4)
内部类和子类之间存在很大差异:
关于情况:
答案 2 :(得分:1)
这很简单..但内部类和子类不一样..
子类在具有继承逻辑时使用。例如,Rectangle是Shape,因此:Rectangle可以从Shape
继承当您拥有只需要在特定类中使用的类时,将使用内部类。这样,除非他在需要使用内部类的类中,否则没有人会使用该类。 例如: 你有A班 A类有一张地图。 Key类是您创建的用于定义复合键类的类,它仅在A内部使用。所以Key可以是内部类。这样您可以减少文件(Classes),以便其他开发人员不需要处理和理解,除非他正在使用A
希望有意义
答案 3 :(得分:0)
子类继承了它的父类'变量和方法,而内部类则没有。
因此,当子类应该拥有它的父成员时,你会想要使用子类,当你只需要它来执行它时,你可以使用内部类。
例如,您将在名为List的类中使用名为Node的内部类,以便您可以将Node用作成员。
例如,您将在名为Car的类中使用名为Mercedes的子类,因为Mercedes应该继承Car的成员并在需要时覆盖Car的方法。
答案 4 :(得分:-1)
子类基本上共享一个" is-a"与其父母的关系,而内部类共享一个" has-a"关系。例如, 我们有类蛋黄,这是蛋的内部类 上课,然后我们说Egg class"有一个"蛋黄类。的目标 蛋黄类可能是Egg类的成员,但有 没有他们的功能的链接。另外,假设我们有类延伸类动物, 所以Dog class"是一个"动物类和狗类 将继承Animal的所有功能,并可能还有更多功能。