2017-12-04 25 views
-6

設定子は、javaのコンストラクタの単一の関数、つまり値をインスタンス変数に割り当てる機能のみを提供します。なぜ彼らが必要なのか?あなたは例を挙げて説明できますか? 私は尋ねた質問が初歩的であることを理解しており、それは残念です。私はプログラミングに慣れていないので、stackoverflowが見つかるとすぐに私はこの質問をしてきました。削除を試みましたが、許可されませんでした。コンストラクタの代わりにJavaでsetterを使う理由は?

+2

セッターを使用すると、初期化後にオブジェクトの状態を変更できます。一方、コンストラクタは状態を一度しか設定できません。 –

+0

明らかに、既存のオブジェクトの値を変更したいことがあるので、コンストラクタで設定値のみを許可すると、すべてのオブジェクトが不変になります。 –

+0

コンストラクタを言ってコンストラクタを意味しない可能性はありますか?非プライベートフィールドの値を設定することは可能でしょうか? – Clijsters

答えて

1

後で同じインスタンスの値を変更することができるためです。たとえば、のは、次のクラスで人を想定してみましょう:

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"); 

セッターで、私たちは彼女の名前を更新することができますリンダの名前は"リンダウィック"です。

関連する問題