後で同じインスタンスの値を変更することができるためです。たとえば、のは、次のクラスで人を想定してみましょう:
public class Person {
String firstName;
String lastName;
public Person(String firstName, String lastName) {
this.firstName = firstName;
this.lastName = lastName;
}
public void setLastName(String lastName) {
this.lastName = lastName;
}
}
はという女性今シングルである「リンダ・クロフト」がある想像してみてください。
Person linda = new Person("Linda", "Croft");
その後、数年後、彼は名前の「ジョン・ウィック」男と結婚。それから、「Linda」は、結婚後に夫の名前に名前を変更したいと考えています。我々はセッターを持っていない場合、我々は明らかに別の人である、別の「リンダ」を作成する必要があります。今すぐ
linda.setLastName("Wick");
:
Person anotherLinda = new Person("Linda", "Wick");
セッターで、私たちは彼女の名前を更新することができますリンダの名前は"リンダウィック"です。
セッターを使用すると、初期化後にオブジェクトの状態を変更できます。一方、コンストラクタは状態を一度しか設定できません。 –
明らかに、既存のオブジェクトの値を変更したいことがあるので、コンストラクタで設定値のみを許可すると、すべてのオブジェクトが不変になります。 –
コンストラクタを言ってコンストラクタを意味しない可能性はありますか?非プライベートフィールドの値を設定することは可能でしょうか? – Clijsters