次の図では、 がp
を指していperson
ます。
p
という名前の関数への参照として渡されcallFunction
ます。に変更を加えるp
と、 にも反映されperson
ますか? 説明してください。
渡された引数は、元の変数の参照値であることを理解しています(そう願っています!)。しかし、私はそれ以上考えることができません。
次の図では、 がp
を指していperson
ます。
p
という名前の関数への参照として渡されcallFunction
ます。に変更を加えるp
と、 にも反映されperson
ますか? 説明してください。
渡された引数は、元の変数の参照値であることを理解しています(そう願っています!)。しかし、私はそれ以上考えることができません。
などの詳細を変更するp
と反映されます
// Nothing done to p before this
p.changeName("Not Sanika Anymore"); // This will be reflected as both point to the same object as references are the same
新しい人を作成して割り当てると、それはp
機能しません
// New Person for p
p = new Person("New Sanika"); // now this p is pointing to the newly created object's reference
p.changeName("Not Sanika Anymore"); // This won't be reflected
これは、Java が純粋 に値渡しであるためです。オブジェクトの参照を値として に渡していますcallFunction()
。
Eng.Fouadによるこの回答は、この概念を非常に良い方法で説明しています。
はい、両方の参照が同じ Person オブジェクトを指しているためです。参照を使用して属性を変更すると、同じオブジェクトが更新されます。