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


コメント