はじめに
Javaを勉強していると出てくる「this
」というキーワード。「これ、いったい何の意味?なんで必要なの?」と疑問に思ったことはありませんか?
実は、this
はJavaでプログラムを書くときにとても重要なキーワード。オブジェクトの中から自分自身を指し示すための便利な道具なんです。
この記事では、Javaのthis
が「どんなときに」「なぜ」使われるのかを、初心者や小学生にもわかるようにやさしく解説します。
1. thisとは何か?基本イメージ
自分自身を指す「手鏡」
Javaのthis
は、**「今使っているこのオブジェクト自身」**を意味します。
たとえば、以下のようなクラスがあったとします:
1 |
public class Student {<br> String name;<br><br> public void showName() {<br> System.out.println("私の名前は " + this.name);<br> }<br>}<br> |
この中のthis.name
は、「今このメソッドを呼び出しているオブジェクトのname
フィールド」を意味します。
つまり、this
は「この子自身」を表しているんですね。
2. 代表的な使い方①:フィールドと引数の名前が同じとき
this
の最もよく使われるパターンは、引数とフィールドの名前が重なってしまったときです。
1 |
public class Book {<br> String title;<br><br> public Book(String title) {<br> this.title = title;<br> }<br>}<br> |
なぜthisが必要?
この場合、引数もフィールドも名前がtitle
。ただtitle = title;
と書くと、両方とも引数のtitle
を指してしまい、代入が意味をなさないのです。
そこでthis.title
と書けば、「こっちはフィールド、右側は引数」と明確に区別できます。
3. 代表的な使い方②:コンストラクタの中から他のコンストラクタを呼ぶ
Javaでは、**1つのクラスに複数のコンストラクタ(作るときのルール)**を用意できます。そして、1つのコンストラクタの中から別のコンストラクタを呼び出すことができます。それがthis(...)
です。
1 |
public class User {<br> String name;<br> int age;<br><br> public User(String name) {<br> this(name, 18); // もう1つのコンストラクタを呼ぶ<br> }<br><br> public User(String name, int age) {<br> this.name = name;<br> this.age = age;<br> }<br>}<br> |
こうすることで、共通の処理を1カ所にまとめて管理しやすくなります。
4. その他の使い方
・メソッド内で他のメソッドやフィールドを明示的に呼ぶ
1 |
public class Printer {<br> String model;<br><br> public void printModel() {<br> System.out.println("モデル:" + this.model);<br> this.showThanks();<br> }<br><br> public void showThanks() {<br> System.out.println("印刷ありがとうございます!");<br> }<br>}<br> |
・メソッドチェーンでreturn thisを使う
1 |
public class Builder {<br> String text = "";<br><br> public Builder addHello() {<br> this.text += "こんにちは";<br> return this;<br> }<br><br> public Builder addWorld() {<br> this.text += " 世界";<br> return this;<br> }<br><br> public void print() {<br> System.out.println(this.text);<br> }<br>}<br><br>// 使用例<br>new Builder().addHello().addWorld().print();<br> |
こうすると、**メソッドを続けて呼び出す「メソッドチェーン」**が可能になります。
5. 使ってはいけない場面
staticメソッドやstaticブロックではthisは使えない
static
とは「インスタンスを作らずに使える」メンバ。つまり、まだ「自分自身(インスタンス)」が存在しない段階なので、this
は使えません。
1 |
public class Demo {<br> static String title = "Hello";<br><br> public static void showTitle() {<br> // System.out.println(this.title); // エラー!<br> }<br>}<br> |
6. メリットと注意点
✅ メリット
- 名前の重複があっても正しく代入できる
- 自分自身を渡せる(リスナー、コールバックなどに便利)
- メソッドチェーンでスッキリしたコードに
⚠️ 注意点
- 使わなくても済む場合は、無理に使わなくてもOK
- static環境で使うとエラーになる
7. 実践コード集
① 名前の重複でthisを使う例
1 |
public class Person {<br> String name;<br><br> public Person(String name) {<br> this.name = name;<br> }<br>}<br> |
② コンストラクタの呼び出し
1 |
public class Account {<br> String id;<br> int balance;<br><br> public Account(String id) {<br> this(id, 0);<br> }<br><br> public Account(String id, int balance) {<br> this.id = id;<br> this.balance = balance;<br> }<br>}<br> |
③ メソッドチェーン
1 |
public class Message {<br> String text = "";<br><br> public Message addLine(String line) {<br> this.text += line + "\n";<br> return this;<br> }<br><br> public void show() {<br> System.out.println(this.text);<br> }<br>}<br> |
8. まとめ&次に学ぶポイント
Javaのthis
は、「自分自身を指す」魔法のキーワードです。フィールドとの区別、他のコンストラクタ呼び出し、メソッドチェーンなど、使いどころを覚えると、コードがとても読みやすくなります。
まずは「絶対にJavaプログラマーになりたい人へ。」を読んで、基本をしっかり固めましょう。そして、**プログラミングの質問やレビュー、転職サポートまでまとめて相談したいなら、サイゼントアカデミー**を活用するのが近道です!
コメント