this
Java(というよりプログラミングにおいて)の this について学んだことのアウトプットです。
thisとは
「this」 とはクラスの中(メソッド内)でインスタンス
を扱うための特殊な変数です。
「自クラスのインスタンスであることを明示的に指し示す機能」を持ちます。
なぜ、thisをつかうのか
結論からいうと理由は
- 「ローカル変数とフィールド変数を明確に区別するため」。
ローカル変数と フィールド変数 は別々のものなので、同じ名前でも作ることが可能なため、同じ名前で使われたときに**どっちなのかわからなくなってしまいます。**そのために、
「フィールド変数にはthisをつける」 という書き方がよく使われます。
どこに、 thisをつかうのか
上にも書きましたが、「this を使う場所 は フィールド変数名の 頭です
例:this.フィールド名
また、this は クラス内のメソッドの定義の中でのみ使用できます。
thisはメソッドが呼ばれた時に、そのメソッドを呼び出しているインスタンスに置き換えられます。
thisを使ってみる
ポケモン図鑑をプログラムしてみました。
Pokemon.java の中で フィールド変数 を定義し、それをクラス内で this をつけて使いまわしているのがわかるかと思います。
//【Pokemon.java】
public class Pokemon {
// フィールド変数
public int number;
public String name;
public String category;
public String type;
public String description;
public Pokemon(int number, String name, String category, String type, String description) {
this.number = number;
this.name = name;
this.category = category;
this.type = type;
this.description = description;
}
}
こちらが呼び出し側のクラスです。
//【Main.java】
public class Main {
public static void main(String[] args) {
// 呼び出し(new した後で、引数へ与えられた値を元に Pokemon が生成されます)
Pokemon pikachu = new Pokemon(025, "ピカチュウ", "ねずみポケモン", "でんき",
"つくる でんきが きょうりょくな ピカチュウほど ほっぺの ふくろは やわらかく よく のびるぞ");
// 使用時
System.out.print("No." + pikachu.number);
System.out.println(" " + pikachu.name);
System.out.print(pikachu.category);
System.out.println(" " + pikachu.type + "タイプ");
System.out.println(pikachu.description);
}
}
実行結果
No.21 ピカチュウ
ねずみポケモン でんきタイプ
つくる でんきが きょうりょくな ピカチュウほど ほっぺの ふくろは やわらかく よく のびるぞ