「guiWait」というパブリック ブール値を持ち、guiWait を返すブール値メソッドを持つ別の GUI クラスがあるとします。
次の違いは何ですか:
while(gui.guiWait)...
と
while(gui.getGuiWait())...
「guiWait」というパブリック ブール値を持ち、guiWait を返すブール値メソッドを持つ別の GUI クラスがあるとします。
次の違いは何ですか:
while(gui.guiWait)...
と
while(gui.getGuiWait())...
違いは可視性です。最初の例のように使用するguiWait
public
と、外部の呼び出し元が値を変更できます。メソッドを使用して variable を作成した場合private
、呼び出し元は変数を変更できませんguiWait
(変更可能な場合は、参照するオブジェクトを変更できます)。さらに、ゲッターとセッターを使用する習慣を身につけた場合、後で取得または設定プロセスにロジックを追加する必要がある場合 (他の新しいフィールドから派生した値を作成する必要がある場合など)、メソッドは既に存在します。変数を作成しても、呼び出し元のコードが壊れることはありませんprivate
。したがって、Java では常にゲッターとセッターを使用することが「ベスト プラクティス」と見なされます。
OOP の中心的な概念はカプセル化です。getter メソッドと setter メソッド (例: getguiWait() メソッド) を使用して、誰もオブジェクトの内部フィールドにアクセスできないようにします。このようにして、誰も内部フィールドを矛盾した/異常な値に設定することはできません。「getter」および「setter」メソッドを使用する (および private を使用して内部フィールドを非表示にする) ことにより、フィールドを設定または取得しようとする人は誰でも、設定したチェックを通過する必要があります。例 クラス Cat は、そのフィールドとして age を持つことができます。setter メソッドでは、ユーザー入力値が負でないことを確認します。年齢フィールドを公開できるようにすると、誰かがそれを負に設定する可能性があり、意味がありません。
JAVAのデータ カプセル化の純粋な概念です。
オブジェクトの一部のコンポーネントへのアクセスを制限するための言語メカニズム。
データを操作するメソッド (または他の関数) とデータのバンドルを容易にする言語構造。
guiWait が public boolean の場合、「getter」メソッドを使用しても意味がありません。それがプライベートまたは保護されている場合、それは別の話になります. private-getter メソッドは、その変数の「取得」の実装を変更し、メソッド内にチェックなどを追加できるため、より柔軟です。プライベートな getter/setter は、物事をより明確にし、他のクラスから見られるべきものと、それらが離れている単一のクラス内でのみ使用されることを意図したものを確立します。特定のメンバー変数に対してゲッターが必要であることがわかった場合 (何らかの検証またはチェックが必要)、これは非常に一般的なことですが、その変数に対してのみゲッターを実行するのは一貫性がありません。