3-7双向关联问题

3-7双向关联问题

  1. 老师我想问下双向关联了以后感觉步骤也没少啊?是数据调用过程减少了吗?还是学生实例化的时候不用添加专业了?

  2. stu.setStudentSubject(this); //将学生与专业相关联
    this.getMyStudent()[i]=stu; //将专业与学生再关联
    不加第一行我还能明白第二行的意思是找到空间就把学生信息存进去 一加第一行 两句就成了互相关联了 我就不懂了 
  3. 这两行代码 我始终无法理清 老师能不能再细细的完整解释一下这两句话的意思?

    主要这个搭配没见过,拿意思翻译好像就是:学生对象.专业赋值方法(当前对象)  但是我就不懂这几个是怎么搭配到一起的?这是固定模式吗还是会随着场景变化而改变 那有没有什么固定模式?应该怎么去记忆或者理解?


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

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

4回答
好帮手慕酷酷 2019-10-25 19:02:00

同学你好,需要无参构造输出的原因是在输出学生信息之前没有进行双向关联,因为测试类中调用双向关联的代码sub1.addStudent(stu1);编写在addStudent()方法中,所以如果先输出学生信息,则会导致没有进行双向关联,所以为null。

而如果同学先进行调用添加学生的方法,进行双向关联,就可以获取到啦~

如:

http://img1.sycdn.imooc.com//climg/5db2d608096053ba07200332.jpg

输出结果:

http://img1.sycdn.imooc.com//climg/5db2d61e091c3fc505080259.jpg

如果我的回答解决了你的疑惑,请采纳!祝学习愉快!

  • 提问者 慕后端4084011 #1
    谢谢老师 现在基本完全了解双向关联的问题了!
    2019-10-26 16:49:02
好帮手慕酷酷 2019-10-25 14:23:20

同学你好,

1、对于第一个问题,同学可以简单理解为双向关联可以让学生实例化的时候不用添加专业,更加准确的理解如下:

双向关联的目的就是保证,在专业类中为有关于学生类的属性赋值。在学生类中为有关于专业类的属性赋值。这样就可以互相访问到对方,也就实现了双向关联。简单来说,就是专业类中也含有学生类的属性,学生类中也含有专业类的属性信息。

这样就可以简化在创建stu1时,不需要sub1的参数设置为stu1对象。然后在添加学生方法中进行统一的双向关联使代码更加简洁。

2、对于第二个问题,stu.setStudentSubject(this); 的含义:这个方法设置了学生的专业,this是指当前对象,也就是Test类中谁调用的这个add方法,谁就是this,我们可以看到是sub1专业对象,所以也就是在stu学生对象中将专业属性进行设置值。保证了学生与专业相关联;

this.getMyStudent()[i]=stu;可以这样理解:this还是指sub1专业对象,也就是将stu这个学生对象赋值给专业对象中的学生信息数组中。保证了专业与学生的关联。

3、对于第三个问题,同学可以尝试着理解着背下来,一般这样的使用都是固定的。

4、对于第四个问题,为什么不同的逻辑限制有的在get方法 有的在set方法?

这里一般情况下,我们都是选择在set方法中进行逻辑的判断操作,为属性设置值,但凡事也有特殊的情况,例如判断数组是否为空就需要在get()方法中,要根据需求而定。

如果我的回答解决了你的疑惑,请采纳!祝学习愉快!

  • 提问者 慕后端4084011 #1
    老师你回复的我都看明白了 还有最后一个问题 输出学生信息不是跟传入的参数有关吗?如果按照图示输出所有学生信息再输出统计人数 我测试了下还是需要五参构造输出的呀 感觉我还是把这两个问题搞混了
    2019-10-25 17:19:28
提问者 慕后端4084011 2019-10-25 13:56:12
public Student[] getMystu() {
		if(mystu==null)
			this.mystu=new Student[200];
		return mystu;
	}
public void setSex(String sex) {
		if(sex.equals("男")||sex.equals("女"))
			this.sex=sex;
		else
			this.sex= "男";
	}

老师为什么不同的逻辑限制有的在get方法 有的在set方法?

提问者 慕后端4084011 2019-10-25 13:13:18

所以双向关联仅仅是作用于统计人数的方法吗?

如果按照图示输出所有学生信息再输出统计人数 我测试了还是要五参构造输出的呀不然就报错了

//		Student stu1 = new Student("张三","男",18,"S01"); 
//		通过学生实例化操作 建立学生跟专业之间的关联
		Student stu1 = new Student("张三","男",18,"S01",sub1); //方法三
		System.out.println(stu1.introduction());
		System.out.println("===================================");


问题已解决,确定采纳
还有疑问,暂不采纳

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

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

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

在线咨询

领取优惠

免费试听

领取大纲

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