對于私有屬性get()和set()方法的問題
為什么Grade類的私有屬性students集合能在其它類修改(在Test類中g(shù).getStudents().add(stu1)),不是私有熟悉的修改只能通過set()方法修改嗎?通過get()方法獲得不應該只是一個拷貝students集合的副本嗎?
照我的理解的代碼應該
Grade grade = new Grade("三年一班","Tfme軟件開發(fā)課");
Student stu1= new Student("葉良臣", "女");
Student stu2 = new Student("王悅","男");
Set<Student> students = grade.getStudents();
students.add(stu1);
students.add(stu2);
grade.setStudents(students);
2017-02-10
Set<Student> students = grade.getStudents(); ?//grade.getStudents()是調(diào)用了一個無參方法,這時候班級對象grade已經(jīng)獲得了學生集合(可以對這個集合直接操作,如add),但是你又重新set了一個新的students集合
students.add(stu1);?
grade.setStudents(students); //?又把這個新集合放進了班級對象里,這句代碼多余了。
前兩行代碼其實等同于g.getStudents().add(stu1);
2017-02-13
你這么理解也是可以的,
實例化Grade grade = new Grade("三年一班","java");
然后調(diào)用grade.getGname()得到gname的屬性內(nèi)容,
這時候?qū)name做的改變是不會涉及Grade類里的Gname的值的改變,也就是你理解的拷貝了一份內(nèi)容?
具體你可以寫個String 接收一下你改變的grade.getGname.contact("最牛逼"),打印一下看看。
但是一樓回答的是實例化之后,對于集合存值的操作發(fā)現(xiàn)你的步驟太繁瑣,實例化Grade類,然后調(diào)用grade.getStudents()就可以得到這個集合,點出add方法,是向集合添加對象,可以直接操作集合。
Grade類定義的私有屬性和私有集合可能有些出入,但是你的理解在私有屬性上是沒錯的,但是你這么操作私有集合可能步驟沒有那么多。