问答详情
源自:5-4 学生选课---修改 Map 中的学生

关于put方法创建新对象的问题

为什么要新建一个对象直接在第一个对象上修改姓名不行吗

比如这样 st.name = console.next();

students.put(ID,st)


提问者:qq_西伯利亚狼_12 2017-07-06 19:07

个回答

  • qq_自在如风的少年_1
    2018-03-29 21:28:18

    st.name是个value值

    例 st.name是“小明”

    “小明”=“小红”?无法付值,左边必须为一个变量

    这是我的理解

  • 非文艺女青年
    2017-09-01 16:57:34

    不新建的话你也需要先将输入ID对应的学生对象取出来再做修改,不然你的st对象是哪里来的,你可以自己试试

  • Meng7y
    2017-07-07 09:36:32

    上面的答案有点问题,我还需要去测试一下。感觉有点说不通。

  • Meng7y
    2017-07-06 20:26:09

    正常来讲,学生类的名字变量都需要用私有的修饰符private修饰。这样就需要封装,使用get和set方法获得或者设置名字。实例化有参数的构造器(获得一个对象)就会传入名字和ID。这个时候调用set方法是不能设置名字的,因为封装保证了变量的安全性。如果使用一个无参数的构造器。然后在使用set方法设置名字,那么就是创建了一个新的对象,没有起到修改的作用。你需要去把学生类里面的name属性的修饰符改成private的。然后将属性封装。