类互相引用

类互相引用

public class Subject{

    ​...

    private ​Student[] stu;

}


public class Student{

    ​...

    ​private Subject sub;

}


这样定义两个类,它们不是互相引用了吗,

假如在Subject类中实例化stu对象,首先会实例化Student类中的sub成员,但sub成员他又包括stu,这样不会反复下去吗?

正在回答 回答被采纳积分+1

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

2回答
好帮手慕小班 2021-06-06 17:21:20

同学你好,这里同学的理解有一些问题,当实例化Subject时,会将类中的属性设置为一个默认值,此时作为对象类型,该默认值为null,所以对应stu数组会根据代码实例化一个值为null的长度固定的数组。

http://img1.sycdn.imooc.com//climg/60bc92fb090155de09350458.jpg

完成后继续向下执行。

祝学习愉快!

好帮手慕小脸 2021-06-05 18:16:29

同学你好,是指如下这样吗?

http://img1.sycdn.imooc.com//climg/60bb4ef7094e76b407370254.jpg

如果是,只会调用一次,是不会反复调用的

祝学习愉快~


  • 提问者 seagull丶7 #1

    老师,还是有点没懂...

    如下,当前有两个类

    http://img1.sycdn.imooc.com//climg/60bc6f92092c7aa314060624.jpg

    我对Subject类对象subject进行实例化操作,该操作会在堆内存开辟空间,给对象name和stu,

    而Student[] stu对象定义时进行了实例化操作,

    所以会继续在堆内存上给stu对象的成员分配空间,

    然后Subject[] sub对象定义时也进行了实例化操作,

    所以导致反复调用。

    我这个理解错在哪了?我有点晕(((φ(◎ロ◎;)φ)))

    2021-06-06 14:54:52
问题已解决,确定采纳
还有疑问,暂不采纳

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

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

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

在线咨询

领取优惠

免费试听

领取大纲

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