美文网首页Net
对象与引用变量

对象与引用变量

作者: WangYatao | 来源:发表于2017-03-21 17:32 被阅读14次

转自:http://www.cnblogs.com/huangyu/archive/2004/08/02/29622.html
从宏观的角度来看,对象是类的实例。比如:

Paste_Image.png

这时,我们会象通常所说的那样讲到:我们创建了一个名为nemo的Someone类的对象(是的,这没有错,但它会和下文所讲的一些内容产生些许理 解上的困惑)。因为每当创建类的一个实例(昵称为nemo的某人),就创建该类的一个对象(名为nemo的Someone类的对象),而每个对象自身包含 类中定义的所有实例变量(age,sex,name等)的一个拷贝,所以说对象nemo是Someone类的实例。顺便,我们再创建一个名为andy的 Someone类的对象:

Paste_Image.png

对象nemo和对象andy是相同的吗?他们仅仅是名字不同而已吗?不——因为每个对象的变量的值不同!比如:

Paste_Image.png

所以nemo和andy是两个不同的对象,唯一相同的是它们都属于同一种类型——Someone类!而从微观的角度来看,我们前面所说的“对象nemo”真的是对象吗?你可能会奇怪我怎么会这么问...实际上,Someone nemo = new Someone();这一创建一个Someone类的对象的过程分为两步:

Paste_Image.png

nemo = new Someone();

此时,对于nemo的理解应该是:nemo是一个引用新创建的Someone类对象的变量(如同c语言的指针变量),它本身并不是一个对象!

Paste_Image.png

现 在你理解了为什么说类是引用类型了吧?——类对象通过引用来访问呀!同时,也说明了为什么上文说“nemo和andy是两个不同的对象”——运行时为对象 动态分配内存,所以两个对象所在的内存地址不同,当然两个对象是不同的咯!——等等,你刚刚不是说nemo是引用变量吗?怎么又说“nemo... 是...对象”了呢?笔者在初学时在理解上存在这样的困惑!但是,你可能注意到了,Someone是一个类,而nemo自然就是声明为这个类的一个变量;而类作为一种类型,它是属于引用类型,所以nemo自然就是一个引用类型的变量即引用变量了啊。关键的一点是,我们可以从不同的角度来看这一问题:宏观上,nemo是对象;而微观上,深层的理解,nemo是引用变量。

相关文章

  • 对象与引用变量

    转自:http://www.cnblogs.com/huangyu/archive/2004/08/02/2962...

  • python的函数

    function 的参数传递python的变量是一个对象的引用,变量与变量之间的赋值是对同一个对象的引用,当变量重...

  • 谈谈Java中的浅克隆和深克隆

    先说定义:深克隆克隆所得对象的所有变量都含有与原来的对象相同的值,除去那些引用其他对象的变量。那些引用其他对象的变...

  • 引用的本质:栈内存和堆内存

    在python中,变量:对象的引用。因为,变量存储的就是对象的地址,变量通过地址引用了‘对象’。 变量位于:栈内存...

  • 变量(引用)的使用与删除、常量

    变量 变量就是对象的引用,即变量通过地址引用了“对象” 变量位于栈内存;对象位于堆内存 *python是动态类型语...

  • Python弱引用

    Python弱引用 弱引用:新增变量时,变量计数器不会增加。弱引用与强引用相对,是指不能确保其引用的对象不会被垃圾...

  • js变量

    :变量又分为基本类型(值型变量)的变量与引用类型的变量; :所谓引用可以认为是一种用于指示出对象位置的标记; 变量...

  • C++复合类型总结(指针)

    引用是变量的别名,指针就是变量地址的别名。 与引用类似,指针也实现了对其他对象的间接访问。然而指针与引用又有很多不...

  • Java 的小白学习笔记三(数据类型和变量类型)

    Java两大数据类型 一、内置数据类型 二、引用类型 引用类型指向一个对象,指向对象的变量是引用变量。引用变量声明...

  • java向上转型

    java 之向上转型 当父类对象引用变量引用子类对象时,被引用对象的类型决定了调用谁的成员方法,引用变量类型决定可...

网友评论

    本文标题:对象与引用变量

    本文链接:https://www.haomeiwen.com/subject/hjmgnttx.html