老师你好,我想问一下什么叫引用,谢谢

老师你好,我想问一下什么叫引用,谢谢

Animal two=new Cat();
//我们知道这句话是父类引用指向子类实例。那这句代码里面two是代表引用嘛?two是不是也是变量呢?two和对象又是什么关系呢?

正在回答

登陆购买课程后可参与讨论,去登陆

2回答

对象的引用和基本类型的变量都是存放在栈中的,而由new创建出来的对象是存放在堆中的。Animal two=new Cat();是在堆中创建了一个对象new Cat()后,在栈中定义了一个变量two,然后让栈中的two变量的取值等于new Cat()在堆内存中的首地址,以后就可以在程序中使用栈中的引用变量two来访问堆中的对象了。

  • qq_温书_0 提问者 #1
    非常感谢!
    2018-07-06 19:26:26
慕神0611619 2018-07-06 06:15:17

通过构造方法而产生的是对象。这里指的是 new Cat()。等号左边的部分是一个Animal类别的引用。你可以把这个过程想象成,我创建了一个名字叫“中山”的“公园”,然后我把一个“花瓶”放在的“中山公园”里面。如果你想找到花瓶,那么你需要在地图里输入“中山公园”,然后地图就会告诉你一个地址“广州南路14号”,你去这个地址就可以找到花瓶了。 在这里,‘公园’是类,‘中山’是引用,‘花瓶’是数值, 而‘广州南路14号’是存放‘花瓶’(也就是数值)的地址。

所以,引用并不是真正的对象,而是 指向 存放对象的地址。

  • 提问者 qq_温书_0 #1
    你好,在这个举例中,‘公园’比作Cat()类嘛?‘中山’比作two嘛?
    2018-07-06 16:09:59
  • 提问者 qq_温书_0 #2
    或者我可以简单的概括为two是一个引用变量嘛?
    2018-07-06 16:16:02
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师