ゲッターとセッター
メニューを表示するにはスワイプしてください
privateアクセス修飾子を回避する最良の方法
すべてのJavaプログラマーが使用する構造にgetterとsetterがあります。
Getterとsetterは、特定のパターンに従うメソッドです。これらはprivateアクセス修飾子を回避し、他のクラスからフィールドを操作するために使用されます。
GetterとSetterの役割
簡単に言うと、setterはprivateアクセス修飾子で保護された特定のフィールドに値を代入でき、getterはprivateアクセス修飾子で保護されたフィールドから値を取得できます。
getterとsetterの構文:
Main.java
123456789// getter public fieldType getFieldName() { return field; } // setter public void setFieldName(fieldType field) { this.field = field; }
上記のコードのように、メソッドにはgetFieldName()およびsetFieldName()という命名規則を使用します。したがって、フィールドprivate String nameがあり、getterとsetterをそれぞれgetName()とsetName()という名前で作成します。また、getterはnameフィールドと同じ型の値を返し、setterはnameフィールドと同じ型のパラメータを受け取る点にも注意が必要です。
これにより、privateアクセス修飾子で保護されたフィールドにアクセスできます。
Personクラスからmainクラスのprivateフィールドにアクセスする例を見てみましょう:
Main.java
123456789101112131415161718192021package com.example; public class Main { public static void main(String[] args) { Person bob = new Person(); bob.setName("Bob"); System.out.println(bob.getName()); } } class Person { private String name; public String getName() { return name; } public void setName(String name) { this.name = name; } }
ご覧のとおり、setter を使って name フィールドに値を設定し、その後 getter を使って name フィールドの値を画面に表示します。getter と setter の構文、そして name クラス内の Person フィールドが private アクセス修飾子によって保護されている点に注意してください。
コンストラクタと Getter/Setter の違い
コンストラクタによる初期化と toString() メソッドのオーバーライド、または getter と setter の使用、どちらが良いのでしょうか?
private アクセス修飾子で保護されたフィールドへアクセスするには、getter と setter を使う方が明らかに優れています。これによりコードの柔軟性が高まり、可読性も向上します。コード内で getName() メソッドが使われているのを見ると、このメソッドが name というフィールドを取得することがすぐに分かります。同様に setName() メソッドが使われている場合、そのクラスのオブジェクトのフィールドに特定の値を代入していることがすぐに理解できます。他の人があなたのコードを読む場合、getter と setter があると分かりやすくなります。
また、各フィールドにはそれぞれ専用の getter と setter が必要であることにも注意してください。クラスに private アクセス修飾子で保護されたフィールドが2つある場合、それぞれのフィールドに1つずつ getter と setter が必要となり、合計で2つの getter と2つの setter になります。
次に、age クラスに Person フィールドを追加する例を見てみましょう。
Main.java
12345678910111213141516171819202122232425262728293031package com.example; public class Main { public static void main(String[] args) { Person bob = new Person(); bob.setName("Bob"); bob.setAge(27); System.out.println("Person's name: " + bob.getName() + ", Person's age: " + bob.getAge()); } } class Person { private String name; private int age; public int getAge() { return age; } public void setAge(int age) { this.age = age; } public String getName() { return name; } public void setName(String name) { this.name = name; } }
ご覧のとおり、Person クラスの各フィールドに対して 1 つの getter と 1 つの setter を作成しています。main メソッドでは、setter を使ってフィールドを初期化し、getter を使ってその値を画面に表示しています。これらのメソッドは非常に便利であり、今後頻繁に使用することになります。
1. getter と setter を使用する目的は何ですか?
2. Java における getter メソッドの構文は何ですか?
3. Javaにおけるセッターメソッドの構文はどれですか?
フィードバックありがとうございます!
AIに質問する
AIに質問する
何でも質問するか、提案された質問の1つを試してチャットを始めてください