组合和内部类有哪些不同和相似之处?我正在尝试学习Java的原则并尝试理清全局思路。对于我来说,最好是通过比喻来看到概念之间的差异和相似之处,以便正确地使用它们。
组合的定义: “组合是一种设计技术,用于在类中实现has-a关系。” “Java组合是通过使用引用其他对象的实例变量来实现的”
内部类(或成员类,非匿名)的定义: “成员类也被定义为封闭类的成员,但没有声明static修饰符。这种类型的内部类类似于实例方法或字段。成员类的实例始终与封闭类的实例相关联,并且成员类的代码可以访问所有字段和方法。”
因此,通过对比这两个定义,我发现了一些相似之处:
1. Both have HAS-A relationship
2. Both are strictly dependent on the outer class lifetime
3. can be declared private
区别:
1. Inner classes uses classes, composition use instances (?!)
2. In composition no restriction to use the variables of the "outer" class
请纠正我如果我完全错了,我需要更好地追踪两个概念的限制。