در واقع this یک اشاره گر به آبجکتی از کلاس جاری می باشد.

زمانی که بخواهیم متغییری در کلاس را اشاره کنیم می توانیم با this این کار را انجام دهیم.

همچنین با استفاده از this می توانیم کانستراکتور همان کلاس را فراخوانی کنیم.

برای اینکه واضح تر به ادامه توضیحات ادامه بدیم یک مثال میزنیم

public class Test {
public Test(){
this(10);
}
public Test(int i){
this(i,++i);
}
public Test(int i, int j){
System.out.println("i : "+i + " j : "+j);
}
public static void main(String[] args){
Test t = new Test(); // or new Test();
}
}

در اینجا با استفاده از this() می توانیم سازنده های موجود در کلاس را فراخوانی کنیم و اگر سازنده ایی دارای پارامتر باشد برای this آن پارامتر ها را مقدار دهی می کنیم تا به سازنده مورد نظر اشاره کند.

در ادامه مطلب مثالی از this برای اشاره به یک متغییر ارائه می دهیم...

public class Test {
	int i;
	public Test(int i){
		this.i = i;
		System.out.println(this.i);
	}
	public static void main(String[] args){
		Test t = new Test(10);
		
	}
}

در این کلاس یک متغییر سراسری به نام i وجود دارد و سازنده ایی با پارامتری هم نام و هم نوع  با متغییر کلاس وجود دارد.

از متغییر سراسری در سازنده به صورت مستقیم نمی توان استفاده کرد چون هم نام با پارامتر سازنده می باشد و کامپایلر به متغییر محلی اولویت را می دهد. برای استفاده از i در سازنده باید از اشاره گر this استفاده کرد. دستور زیر را در سازنده قرار داده ایم

this.i = i;

معنی این عبارت این است که مقدار پارامتر i را در متغییر i قرار بده که منطقا برای اینکه انتساب درست انجام گیرد باید پارامتر و متغییر هم نوع باشد که در این مثال از نوع صحیح هستند.در واقع با زبان ساده اگر بگوییم به کامپایلر می فهمانیم که منظور ما از i متغییر کلاس می باشد.

در متد main کلاس، نمونه از کلاس ایجاد کردیم که در هنگام new آبجکت مقدار 10 را به پارامتر سازنده فرستادیم و عمل انتساب و چاپ را انجام دادیم.

موفق باشید