Javaのthisキーワードのまとめ
こんにちは。ゆうせいです。
Javaでプログラムを書いていると、this
というキーワードに出会います。このthis
はクラスの中で使われる特別なキーワードで、Javaのオブジェクト指向の仕組みを理解する上でとても重要な役割を持っています。
今回は、「this」とは何なのか、どのような場合に使われるのかについて詳しく解説しますね。
1. this
とは?
this
は、現在のインスタンス(オブジェクト)自身を指すキーワードです。クラスの中で自分自身を参照したいときに使います。これは、メソッドやコンストラクタの中でそのオブジェクト自体を指し示す際に便利です。
Javaではクラスを使ってオブジェクトを作成しますが、そのオブジェクトがメソッドの中で自分自身を指し示す場合にthis
を使用することで、そのオブジェクトの属性やメソッドにアクセスできます。
例:簡単なクラスでのthis
の使い方
以下の例で見てみましょう。
public class Person {
String name;
public Person(String name) {
this.name = name; // thisを使って自分のフィールドにアクセス
}
public void printName() {
System.out.println(this.name); // thisで自分のフィールドにアクセス
}
}
この例のPerson
クラスにはname
というフィールド(クラスのメンバー変数)があり、コンストラクタとprintName
メソッドがあります。this
を使うことで、現在のインスタンス(Person
オブジェクト)のname
フィールドにアクセスしています。
2. this
の主な使い方
this
は主に以下の3つのケースでよく使われます。
2.1 フィールドとパラメータの区別
よくある使い方として、コンストラクタやメソッドのパラメータがフィールド名と同じ時に区別するために使用します。このときthis
を使ってフィールドを指すことで、引数の値をフィールドに割り当てられます。
以下の例で考えてみましょう。
public class Car {
String model;
public Car(String model) {
this.model = model; // this.model はフィールド、model は引数
}
}
コンストラクタの引数もmodel
、フィールドもmodel
なので、this.model
とすることで、クラスのフィールドを指していることが明確になります。
2.2 メソッドチェーンでの利用
this
を使って同じオブジェクトのメソッドを連続して呼び出す、いわゆる「メソッドチェーン」を実現することができます。メソッドチェーンは、this
を使ってメソッドの戻り値に自分自身のインスタンスを返すことで、連続したメソッド呼び出しを可能にします。
public class Book {
String title;
public Book setTitle(String title) {
this.title = title;
return this; // 自分自身のインスタンスを返す
}
public Book printTitle() {
System.out.println(this.title);
return this;
}
}
このようにして、次のようにメソッドチェーンを実現できます。
public class Main {
public static void main(String[] args) {
Book myBook = new Book();
myBook.setTitle("Java入門").printTitle(); // メソッドチェーンで呼び出し
}
}
2.3 コンストラクタから別のコンストラクタを呼び出す
this
を使って、別のコンストラクタを呼び出すこともできます。これを「コンストラクタの委譲」と言います。例えば、引数の数が異なるコンストラクタを呼び出して、共通の初期化処理をまとめることができます。
public class Student {
String name;
int age;
public Student() {
this("No name", 18); // 引数を持つコンストラクタを呼び出し
}
public Student(String name, int age) {
this.name = name;
this.age = age;
}
}
この例では、引数なしのコンストラクタが、引数ありのコンストラクタをthis
を使って呼び出しています。これにより、Student
オブジェクトを引数なしで作成した場合もname
とage
の初期値が設定されます。
3. this
を使うメリット
this
を使うことで、コードが以下のように明確で読みやすくなります。
- フィールドと引数を区別できる:同じ名前の引数やフィールドがある場合も混乱を避けられる
- メソッドチェーンが可能になる:連続したメソッド呼び出しができ、コードが簡潔に書ける
- コンストラクタの委譲が可能になる:共通の初期化処理をまとめられるため、コードの重複を避けられる
4. this
の使いどころに注意!
this
は便利ですが、不要な場面で使うとコードが冗長になりがちです。フィールドやメソッドにアクセスする際、特に混乱がない場合にはthis
は省略するのが一般的です。this
は明示的に自分自身を参照する必要がある場合や、可読性を向上させるためにのみ使うと良いでしょう。
まとめ
this
は現在のインスタンスを指す:そのオブジェクト自身を参照できる- フィールドと引数を区別するために使う:特に名前が同じ場合に役立つ
- メソッドチェーンやコンストラクタの委譲にも利用:より柔軟なコードが書ける
this
をうまく活用できるようになると、オブジェクト指向の理解がさらに深まります。使い方を意識しながらコードを書くことで、Javaのプログラムがさらに読みやすくなるでしょう!
セイ・コンサルティング・グループの新人エンジニア研修のメニューへのリンク
投稿者プロフィール
-
セイ・コンサルティング・グループ株式会社代表取締役。
岐阜県出身。
2000年創業、2004年会社設立。
IT企業向け人材育成研修歴業界歴20年以上。
すべての無駄を省いた費用対効果の高い「筋肉質」な研修を提供します!
この記事に間違い等ありましたらぜひお知らせください。
最新の投稿
- 新入社員2024年12月14日「ジョセフ・シュンペーターの名言」を新人エンジニア向けに解説
- 新入社員2024年12月14日「フィリップ・コトラーの名言」を新人エンジニア向けに解説
- 新入社員2024年12月14日「ジャック・ウェルチの名言」を新人エンジニア向けに解説
- 新入社員2024年12月14日「移譲」を実現する方法をJavaを例に新人エンジニア向けに解説