The question is in the title: In Kotlin, if an object is passed into a new instance of a class and then some properties are changed, will it change the properties in the original object? Image I've got the following situation:
class User{ var name: String = "initial name" } class UserHolder{ companion object{ var INSTANCE: User } } class ClassA{ fun doStuff(){ val classB = ClassB(UserHolder.INSTANCE) classB.changeUser() val newName = UserHolder.INSTANCE.name // is it "initial name" or "My new name"? } } class ClassB(private val user: User){ fun changeUser(){ user.name = "My new name" } } will the newName be is "initial name" or "My new name" and why? I know that if I pass an object into a method and change its properties, then on return the properties will be updated. But why doesn't it work with the classes? Is it because we write 'val user'?