Class1有一个类型的属性Class2,名为pippo:
public class Class1{
private Class2 pippo; //an attributo of Class1
.....
public Class2 getPippo()
{ return this.pippo;}
}
Run Code Online (Sandbox Code Playgroud)
现在考虑一个格式良好的Class1named 实例,pluto并考虑以下流程:
Class2 obj=pluto.getPippo();
// I apply some modification on obj
Run Code Online (Sandbox Code Playgroud)
现在明确修改obj了类型的实例Class1.
问题:这些修改是否也适用于Class1 pluto对象,这意味着由于操作符obj而pluto.pippo具有相同的"生命" =?
问题:此类修改是否也适用于
Class1 pluto对象,
这个问题的答案是:问题本身就是一种误解.:-)
pippo并且obj是指向(指向)同一对象的变量.所以没有两个对象以某种方式链接,有一个对象,你有两个引用(指针).
很自然地,如果通过一个引用更改该对象的状态,则通过另一个引用可以看到该更新状态.
我们来看一个更简单的例子:
Thingy t1 = new Thingy();
Run Code Online (Sandbox Code Playgroud)
这让我们记忆犹新:
+---------------+ +-----------------+
| t1 (variable) |----->| Thingy instance |
+---------------+ +-----------------+
| field: value |
| ... |
+-----------------+
如果我们这样做:
Thingy t2 = t1;
Run Code Online (Sandbox Code Playgroud)
我们有:
+---------------+
| t1 (variable) |--+
+---------------+ |
|
| +-----------------+
+-->| Thingy instance |
| +-----------------+
| | field: value |
+---------------+ | | ... |
| t2 (variable) |--+ +-----------------+
+---------------+
随着形势pippo和obj是完全一样的.
| 归档时间: |
|
| 查看次数: |
51 次 |
| 最近记录: |