【Java入門】thisとは? 意味や使い方のキホンを解説します!

Javaのthisを使用することで変数名が重複しても区別することができます。「メンバ変数とローカル変数の変数名を同じにして使用したい」と思ったことはありませんか?

thisを使えば変数名が同じでも区別して使用することができます。今回は、そんなthisについて、使い方の基礎から応用までわかりやすく解説していきます!

  • 【基礎】thisとは
  • 【基礎】thisの使い方
  • 【発展】thisでstatic変数にアクセスするときの注意点
  • 【発展】tsuperで親クラス(スーパークラス)の変数やメソッドを参照する方法

今回はこれらの方法を覚えるために、thisとは何か?意味や使い方を詳しく見ていきましょう!

thisとは

初めにthisの意味と使い方を解説します。thisは同じ変数名やメソッド名があるときに、それらを区別するために使用します。

例えば、メンバ変数名とローカル変数名が同じ場合にはローカル変数が優先して参照されます。このときにメンバ変数を指定する場合にはthisをつけて対応します。

thisの使い方

メンバ変数とローカル変数

ここでは、変数名が同じメンバ変数とローカル変数を区別する方法を解説します。同じ変数名にthisを付けると、実行結果がどう変わるのかを次のプログラムを確認してみましょう。

[実行結果]

ここではthisを使ってメソッドの引数になっているローカル変数と、メンバ変数を区別して表示しています。これでthisを使ってローカル変数とメンバ変数を区別することができました!

別のコンストラクタを呼び出す

次にthisを使ってコンストラクタから、別のコンストラクタを呼び出す方法を解説します。次のプログラムで確認してみましょう。

[実行結果]

このプログラムでは引数が1つのコンストラクタから、thisを使って引数が2つのコンストラクタを呼び出しています。thisを使って別のコンストラクタを呼び出せることが確認できました!

コンストラクタの詳しい使い方はこちらの記事で詳しくしているのでぜひ確認してみてください!

【Java入門】コンストラクタの使い方総まとめ(クラス/インスタンス)
更新日 : 2019年4月8日

static変数にアクセスするときの注意点

次にstatic変数アクセスするときの注意点を解説します。static変数にアクセスするときは、”this.変数名”ではなく”クラス名.変数名”でアクセスしてください。

static変数にアクセスするときにthisを使うと、開発環境(Eclipseなど)から「static フィールド SampleClass.str には static にアクセスする必要があります」という警告が出ます。

動作に問題はありませんが、thisを使うとstatic変数を誤って変更してしまうなどのバグの原因になりやすいので注意してください。次のプログラムで確認してみましょう。

[実行結果]

static変数にアクセスするときにthisを使うと警告が出ますが、”クラス名.変数名”なら警告が出ないことが確認できました!

superで親クラスの変数やメソッドを参照する

最後に、クラスを継承したときに使う”super”と”this”の使い方を解説します。クラスの継承は、クラス名の後に”extends”と”継承するクラス名”を書きます。

サブクラスはスーパークラスのメンバ変数やメソッドを継承しています。サブクラスにスーパークラスと同じ名前の変数やメソッドがある場合には、”super”と”this”を利用して区別します。このときの”this”は省略することもできます。

次のプログラムで確認してみましょう。

[実行結果]

”super”と”this”を使って、スーパークラスとサブクラスのメンバ変数やメンバメソッドを区別して使うことができました!superの詳しい使い方はこちらの記事で詳しくしているのでぜひ確認してみてください!

【Java】superとは?意味や使い方について詳しく解説
更新日 : 2019年6月12日

まとめ

いかがでしたか?今回はthisの意味と使い方について解説しました。同じ名前の変数がある場合はthisを使うのを忘れないように注意してくださいね。もしthisの使い方を忘れてしまったらこの記事を確認してください!

LINEで送る
Pocket

最短でエンジニアを目指すなら侍エンジニア塾

cta_under_bnr

侍エンジニア塾は業界で初めてマンツーマンレッスンを始めたプログラミングスクールです。これまでの指導実績は16,000名を超え、未経験から数多くのエンジニアを輩出しています。

あなたの目的に合わせてカリキュラムを作成し、現役エンジニア講師が専属であなたの学習をサポートするため効率よく学習を進めることができますよ。

無理な勧誘などは一切ありません。まずは無料体験レッスンを受講ください。

無料体験レッスンの詳細はこちら

書いた人

中沢 丈

中沢 丈

フリーランスエンジニア。
システム開発からコンテンツ作成まで幅広く対応します。

連絡先はこちらです。
[email protected]

おすすめコンテンツ

あなたにぴったりなプログラミング学習プランを無料で診断!

プログラミング学習の効率を劇的に上げる学習メソッドを解説