access modifers in scala with var and val

前端 未结 2 568
陌清茗
陌清茗 2021-01-28 05:26

I am getting confused in use of var and val in access modifers, name is var , therefore we can change it, it is ok. But p is val, how we are able to change the p.name = \"Fred F

相关标签:
2条回答
  • 2021-01-28 06:08

    You should remember that variables are just references. So when you create variable with val it means that you can't assign new reference to it. In var case its possible.

    As you see when you create val p = new Person("Alvin Alexander") p will have reference to same Person object always. You can't create another Person and assign it to p

    But any person instance has var name variable which is reassignable to new strings.

    As a result final p has reference to mutable Person instance.

    0 讨论(0)
  • 2021-01-28 06:25

    val or var works only for next variable (on it's reference), it does not indicate whether variable is mutable or not. In your example, p is mutable (because one can change p.name). But you cannot write p = anotherPerson.

    0 讨论(0)
提交回复
热议问题