PHASE2 LOG

主にIT関連・ゲームのログ

Javaのお勉強~thisについて~

      2016/03/12

thisって結構混乱しました。

大学時代にコンストラクタを学んでる最中に、thisも合わせて習っていたのですが

頭の悪い私は教授に聞き直しにいっても理解できませんでした(笑)

 

そのときはコンストラクタの意味もよくわかっていなかったのでw

そんなthisにもう1度リベンジです!

 

 

thisついて

 

thisはそのオブジェクトそのものを指します。

 

thisを使って何ができるかというと、メソッドの引数や変数にフィールドと

同じ名前をつけて使い分けることです。

 

前にコンストラクタの説明で使ってたソースを例に見てみます。

//例1
class Phone{
	String name;
	String maker;
	
	Phone(String n, String m){	//初期化のコンストラクタ
		name = n;
		maker = m;
	}

 

Phone()メソッドの仮引数はフィールド名とは違う名前がつけられていますね。

なんでこうしているかというと、以下のままでは仮引数として認識されなくなるからです。

//例2
Phone(String name, String maker){	//初期化のコンストラクタ
		name = name;
		maker = maker;
	}

 

nameに仮引数としてのnameを入れているつもりですが、

実際にはフィールドのnameが代入されています。

 

エラーにはなりませんが、このままではnullが入ってしまいます。

 

そこで使うのがthisですよ。

 

thisになおしてみたのがこちら

//例3
class Phone{
	String name;
	String maker;
	
	Phone(String name, String maker){	//初期化のコンストラクタ
		this.name = name;
		this.maker = maker;
	}
}

 

nameの前にフィールドをつけた「this.name」で、

これはフィールドのnameそのものですよっていう意味になります。

 

何もついていないnameはコンストラクタの仮引数を指します。

 

thisを使うことでフィールドと仮引数の名前を同じにすることができ、

コンストラクタに渡される引数がわかりやすくなります!

 

上記の例1から例3をイメージにしてみました。

this

 

汚い字ですいません(;・∀・)

thisのリベンジ果たせた気がします!

 

人気ブログランキング

 -