3-7双向关联问题
老师我想问下双向关联了以后感觉步骤也没少啊?是数据调用过程减少了吗?还是学生实例化的时候不用添加专业了?
stu.setStudentSubject(this); //将学生与专业相关联 this.getMyStudent()[i]=stu; //将专业与学生再关联
不加第一行我还能明白第二行的意思是找到空间就把学生信息存进去 一加第一行 两句就成了互相关联了 我就不懂了- 这两行代码 我始终无法理清 老师能不能再细细的完整解释一下这两句话的意思?
主要这个搭配没见过,拿意思翻译好像就是:学生对象.专业赋值方法(当前对象) 但是我就不懂这几个是怎么搭配到一起的?这是固定模式吗还是会随着场景变化而改变 那有没有什么固定模式?应该怎么去记忆或者理解?
正在回答 回答被采纳积分+1
同学你好,
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()方法中,要根据需求而定。
如果我的回答解决了你的疑惑,请采纳!祝学习愉快!
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方法?
所以双向关联仅仅是作用于统计人数的方法吗?
如果按照图示输出所有学生信息再输出统计人数 我测试了还是要五参构造输出的呀不然就报错了
// Student stu1 = new Student("张三","男",18,"S01"); // 通过学生实例化操作 建立学生跟专业之间的关联 Student stu1 = new Student("张三","男",18,"S01",sub1); //方法三 System.out.println(stu1.introduction()); System.out.println("===================================");
- 参与学习 人
- 提交作业 3802 份
- 解答问题 11489 个
本阶段带你迈入Java世界,学习Java必备基础知识,基础语法、面向对象思想以及常用工具类的使用。
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星