Javaを学び始めると、「getter」や「setter」という言葉を耳にする機会が増えます。これらは、クラスのフィールド(メンバ変数)を管理するために欠かせない仕組みです。本記事では、getterとsetterの役割、実際の作り方、そして活用例について初心者向けにわかりやすく解説します。オブジェクト指向プログラミングを理解する第一歩として、ぜひ参考にしてください!
1. getterとsetterとは?
Javaでは、クラスのフィールドをカプセル化することが推奨されています。カプセル化とは、フィールドをクラス内部に隠し、外部から直接アクセスできないようにすることです。その代わりに、getterとsetterというメソッドを使って、フィールドの値を取得したり設定したりします。
getterの役割
フィールドの値を取得するためのメソッド。
setterの役割
フィールドの値を設定(変更)するためのメソッド。
カプセル化を行うことで、フィールドにアクセスする際にアクセス制御やバリデーションを実装でき、コードの安全性や可読性が向上します。
2. getterとsetterの基本的な作り方
以下は、Javaのgetterとsetterの基本例です。
サンプルクラス
1 |
public class Person {<br> // フィールド(メンバ変数)<br> private String name;<br> private int age;<br><br> // nameフィールドのgetter<br> public String getName() {<br> return name;<br> }<br><br> // nameフィールドのsetter<br> public void setName(String name) {<br> this.name = name;<br> }<br><br> // ageフィールドのgetter<br> public int getAge() {<br> return age;<br> }<br><br> // ageフィールドのsetter<br> public void setAge(int age) {<br> if (age < 0) {<br> throw new IllegalArgumentException("年齢は0以上でなければなりません。");<br> }<br> this.age = age;<br> }<br>}<br> |
ポイント
- フィールドは
private
で宣言します(外部から直接アクセスできないようにする)。 - getterはフィールドの値を返すメソッド。
- setterはフィールドの値を設定するメソッド。
- 必要に応じて、setterでデータのバリデーションを実装します(例:年齢が0以上であることを確認)。
3. getterとsetterの活用方法
サンプルコード:Personクラスを使用
1 |
public class Main {<br> public static void main(String[] args) {<br> // Personオブジェクトの作成<br> Person person = new Person();<br><br> // setterを使って値を設定<br> person.setName("田中太郎");<br> person.setAge(30);<br><br> // getterを使って値を取得<br> System.out.println("名前: " + person.getName());<br> System.out.println("年齢: " + person.getAge());<br> }<br>}<br> |
実行結果
1 2 3 |
makefileコードをコピーする<code>名前: 田中太郎 年齢: 30 |
このように、getterとsetterを通じてフィールドの値を安全に操作することができます。
4. 自動生成で効率化しよう
Javaでは、手動でgetterとsetterを作成することも可能ですが、統合開発環境(IDE)を使えば、自動生成ができます。以下は、EclipseとIntelliJ IDEAでの自動生成手順です。
Eclipseでの自動生成
- クラス内でフィールドを定義します。
- ソースコードエリアで右クリックし、メニューから「ソース」→「getterおよびsetterの生成」を選択。
- 生成するフィールドを選択し、OKをクリック。
IntelliJ IDEAでの自動生成
- クラス内でフィールドを定義します。
- カーソルをフィールドの位置に合わせ、
Alt + Insert
を押します。 - 表示されたメニューから「Getter and Setter」を選択。
- 必要なフィールドを選び、OKをクリック。
これにより、必要なgetterとsetterが一瞬で生成されます。
5. getterとsetterのよくあるミスと注意点
1. getterやsetterを忘れる
フィールドをprivate
で宣言しても、getterとsetterを実装しなければ外部からアクセスできません。忘れないように注意しましょう。
2. setterでバリデーションをしない
フィールドの値に制約がある場合は、setter内で必ずチェックを行いましょう。
3. フィールドを直接操作してしまう
フィールドをpublic
で宣言し、直接アクセスしてしまうと、クラス設計の意図が崩れてしまいます。
6. getterとsetterの応用
1. 読み取り専用のフィールド
値の取得のみを許可し、設定を禁止する場合、getterだけを実装します。
1 |
public class Person {<br> private String name;<br><br> public String getName() {<br> return name;<br> }<br>}<br> |
2. 書き込み専用のフィールド
値の設定のみを許可し、取得を禁止する場合、setterだけを実装します。
1 |
public class Person {<br> private String password;<br><br> public void setPassword(String password) {<br> this.password = password;<br> }<br>}<br> |
3. 計算フィールド
getterを使って計算結果を返すように設定することも可能です。
1 |
public class Rectangle {<br> private int width;<br> private int height;<br><br> public int getWidth() {<br> return width;<br> }<br><br> public void setWidth(int width) {<br> this.width = width;<br> }<br><br> public int getHeight() {<br> return height;<br> }<br><br> public void setHeight(int height) {<br> this.height = height;<br> }<br><br> // 面積を返すgetter<br> public int getArea() {<br> return width * height;<br> }<br>}<br> |
7. まとめ
getterとsetterは、Javaプログラミングにおける基本中の基本です。これを理解することで、クラスの設計力が向上し、より堅牢でメンテナンス性の高いコードが書けるようになります。
学習をさらに深めたい方は、絶対にJavaプログラマーになりたい人へ。をチェックして、Javaの基礎を固めてください。また、実践的なスキルを身につけたい方は、サイゼントアカデミーで学ぶことをおすすめします。Javaプログラマーへの道を一歩ずつ進みましょう!
コメント