每个对象都有自己的内存,由其他对象组成。这在Java中仍然有效吗?

时间:2011-04-14 05:59:58

标签: java

换句话说,您可以通过创建包含现有对象的包来创建新类型的对象。因此,您可以将复杂性构建到程序中,同时将其隐藏在对象的简单性之后。

来自Thinking in Java

Java中是不是所有对象都相互独立?是否可以从不同的对象创建超级对象?

编辑:

Alan Kay在Java出现之前总结了Smalltalk方式的五个基本特征。根据他的说法,这是OOP的特征之一。我想知道它是否仍然适用于java。

2 个答案:

答案 0 :(得分:3)

我认为你必须区分两个不同的概念:

在内存中,Java中的每个对象都是一个独立的实体,拥有自己的内存集(我相信Smalltalk的工作方式相同)。它可以引用其他对象,这些对象保存在自己的内存中,但不能“包含”其内存中的其他对象。

从概念上讲,有些对象以某种方式“属于”其他对象。例如,保存char[]数据的String在技术上是一个单独的对象,但引用它的唯一其他对象是String(可能还有其他String个实例,但是我们暂时忽略它。从这个意义上讲,String 包含 char[]

答案 1 :(得分:2)

对象不能在Java中直接包含 的其他对象 - 但它当然可以将引用包含在其他对象中。我怀疑是作者想要了解的内容。

因此,如果Customer对象知道地址,电话号码,订单列表,名称等,那些都将是单独的对象......但不是必须明确地管理所有这些对象,而是 {/ 1}}对象的用户只保留对该对象的引用,并通过该单个对象访问其余数据。