为了账号安全,请及时绑定邮箱和手机立即绑定

对于私有属性get()和set()方法的问题

为什么Grade类的私有属性students集合能在其它类修改(在Test类中g.getStudents().add(stu1)),不是私有熟悉的修改只能通过set()方法修改吗?通过get()方法获得不应该只是一个拷贝students集合的副本吗?

照我的理解的代码应该

Grade grade = new Grade("三年一班","Tfme软件开发课");

Student stu1= new Student("叶良臣", "女");

Student stu2 = new Student("王悦","男");

Set<Student> students = grade.getStudents();

students.add(stu1);

students.add(stu2);

grade.setStudents(students);



正在回答

2 回答

Set<Student> students = grade.getStudents();  //grade.getStudents()是调用了一个无参方法,这时候班级对象grade已经获得了学生集合(可以对这个集合直接操作,如add),但是你又重新set了一个新的students集合

students.add(stu1); 

grade.setStudents(students); // 又把这个新集合放进了班级对象里,这句代码多余了。

前两行代码其实等同于g.getStudents().add(stu1);

1 回复 有任何疑惑可以回复我~
#1

早春的树c

这个回答很好!对我很有帮助 另外楼主可以去看看封装的知识
2017-02-10 回复 有任何疑惑可以回复我~
#2

慕粉粉饼 回复 早春的树c

666666666
2017-02-10 回复 有任何疑惑可以回复我~
#3

qq_醉秒小清新_0 提问者

感谢你的回答,但可能是我语言组织的重点不够清楚,我想问的点被完美的避开了。举个例子吧来说明我的困惑吧: Grade grade = new Grade("三年一班","java"); grade.getGname.contact("最牛逼");//我认为在这里getGname()的返回值已经不是gname属性引用的内容,而是拷贝了了gname中的内容,存放在新的内存地址中,对新地址中内容的操作不会改变gname()中的内容。因此在下面输出语句中"最牛逼"三个字并没有加进去。 System.out.print(grade.getGname).//输出结果是(三年一班)。
2017-02-13 回复 有任何疑惑可以回复我~
#4

qq_醉秒小清新_0 提问者

可以发现同样是引用型数据类型,身为String类型的gname属性通过get()方法获得后是无法修改的,而集合类型的students属性通过get()方法获得后是可以改变的。
2017-02-13 回复 有任何疑惑可以回复我~
#5

qq_醉秒小清新_0 提问者

感谢您的热情回答
2017-02-13 回复 有任何疑惑可以回复我~
#6

慕瓜3841613 回复 qq_醉秒小清新_0 提问者

对象的话和单纯的数据不一样 =的话会把等号两边的对象连起来 数据的话等号就只是单纯的赋值
2018-08-20 回复 有任何疑惑可以回复我~
查看3条回复

你这么理解也是可以的,

实例化Grade grade = new Grade("三年一班","java");

然后调用grade.getGname()得到gname的属性内容,



这时候对gname做的改变是不会涉及Grade类里的Gname的值的改变,也就是你理解的拷贝了一份内容 

具体你可以写个String 接收一下你改变的grade.getGname.contact("最牛逼"),打印一下看看。


但是一楼回答的是实例化之后,对于集合存值的操作发现你的步骤太繁琐,实例化Grade类,然后调用grade.getStudents()就可以得到这个集合,点出add方法,是向集合添加对象,可以直接操作集合。


Grade类定义的私有属性和私有集合可能有些出入,但是你的理解在私有属性上是没错的,但是你这么操作私有集合可能步骤没有那么多。


1 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
Hibernate初探之一对多映射
  • 参与学习       42171    人
  • 解答问题       295    个

Hibernate中一对多关联映射配置,以及cascade和inverse属性作用

进入课程

对于私有属性get()和set()方法的问题

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信