آموزش کلید واژه ی this در جاوا (به زبان ساده)

رتبه: 0 ار 0 رای sssss
آموزش کلید واژه ی this در جاوا
نویسنده: تیم تولید محتوا زمان مطالعه 5 دقیقه

در این آموزش با کلید واژه this در جاوا آشنا می شوید؛ چگونه و کجا استفاده شدن آن را با کمک مثال می آموزید.

کلید واژه ی this

در جاوا ، this به شی فعلی موجود در متد ها یا سازنده ها اشاره دارد. بیایید برای اثبات آن مثالی بزنیم.

  1. class MyClass {
  2. int instVar;
  3. MyClass(int instVar){
  4. this.instVar = instVar;
  5. System.out.println(“this reference = ” + this);
  6. }
  7. public static void main(String[] args) {
  8. MyClass obj = new MyClass(8);
  9. System.out.println(“object reference = ” + obj);
  10. }
  11. }

خروجی

this reference = com.ThisAndThat.MyClass@74a14482

object reference = com.ThisAndThat.MyClass@74a14482

توجه کنید که شناسه شیء obj و this یکی است. معنای this چیزی نیست جز اشاره به شی فعلی.

۳ موقعیت وجود دارد که معمولاً از این کلید واژه استفاده می شود.

۱- استفاده از this برای تفکیک منابع مختلف متغیر

در جاوا مجاز به تعریف دو یا چند متغیر با یک نام مشابه در یک دامنه (دامنه کلاس یا دامنه متد) نیستید. با این حال ، متغیرها و پارامترهای نمونه ممکن است دارای نام یکسان باشند. مانند:

class MyClass {

int instVar; // instVar instance variable

MyClass(int instVar){ // instVar parameter

instVar = instVar;

}

}

در برنامه بالا کامپایلر جاوا به دلیل ابهام نام دچار اشتباه می شود. از این رو برای رفع این مشکل از کلید واژه this استفاده می شود.

بیایید یک مثال را بدون استفاده از کلمه کلیدی this ببینیم:

  1. class MyClass {
  2. int instVar;
  3. MyClass(int instVar){
  4. instVar = instVar;
  5. }
  6. public static void main(String[] args) {
  7. MyClass mc = new MyClass(8);
  8. System.out.println(“mc.instVar = ” + mc.instVar);
  9. }
  10. }

خروجی

mc.instVar = 0

ممکن است انتظار داشته باشید که خروجی ۸ باشد ، اما در عوض ۰ را چاپ کرد زیرا کامپایلر جاوا به دلیل ابهام در نام بین متغیر نمونه و پارامتر سازنده اشتباه می کند.

حال ، اجازه دهید کد فوق را بازنویسی کنیم و از کلید واژه ی this برای حل این مسئله استفاده کنیم.

  1. class MyClass{
  2. int instVar;
  3. MyClass(int instVar){
  4. this.instVar = instVar;
  5. }
  6. public static void main(String[] args) {
  7. MyClass obj = new MyClass(8);
  8. System.out.println(“obj.instVar = ” + obj.instVar);
  9. }
  10. }

خروجی

mc.instVar = 8

اکنون ، خروجی مورد انتظار را خواهید گرفت. به این دلیل که وقتی شما یک شیء ایجاد می کنید ، کامپایلر جاوا می داند کدام شیء از سازنده استفاده کرده است.

وقتی کامپایلر جاوا سازنده را فراخوانی می کند ، this در داخل سازنده با شی ای که سازنده را صدا زده جایگزین می شود.

توجه: اگر پارامتری را ارسال کنید که دارای اسم متفاوت از متغیرهای نمونه باشد ، کامپایلر بطور خودکار کلمه کلیدی this را ضمیمه می کند.

این کد

class MyClass {

int instVar;

چرب زبان

جاوا، جاوا اسکریپت رو قورت بده! بدون کلاس، سرعت 2 برابر، ماندگاری 3 برابر، پولسازی عالی با توسعه وب، ماشین لرنینگ و ... کتابخانه های پیشرفته جاوا اسکریپت و ... دانلود:

پک کامل جاوا اسکریپت  پک آموزش Node.js  پک React.js

پک کامل جاوا

پک مبانی برنامه نویسی (اختیاری-مکمل)

MyClass(int i) {

instVar = i;

}

}

برابر است با:

class MyClass {

int instVar;

MyClass(int i) {

this.instVar = i;

}

}

یکی دیگر از کاربردهای متداول کلمه کلیدی this در متد های get و set یک کلاس است. مثلا:

  1. class POJO {
  2. String name;
  3. void setName( String name ) {
  4. this.name = name;
  5. }
  6. String getName(){
  7. return this.name;
  8. }
  9. public static void main( String[] args ) {
  10. POJO pojo = new POJO();
  11. pojo.setName(“Toshiba”);
  12. System.out.println(“pojo.name: “+pojo.getName());
  13. }
  14. }

خروجی

pojo.name: Toshiba

۲- استفاده از this در سربارگذاری سازنده ها

در حین کار با سربارگذاری سازنده ها، شاید فراخوانی یک سازنده از سازنده دیگر مفید تر باشد. اما ، سازندگان را نمی توان صریح فراخواند. از این رو ، برای تحقق این هدف می توانید از شکل دیگری از کلمه کلیدی this استفاده کنید. (()this)

شبه کد در اینجا نشان داده شده است:

this(arg-list)

در اینجا نحوه استفاده از this در فراخوانی سازنده آمده است.

  1. class Complex {
  2. private int a, b;
  3. // parameterize constructor
  4. private Complex( int i, int j ){
  5. this.a = i;
  6. this.b = j;
  7. }
  8. private Complex(int i){
  9. this(i, i); // invokes Complex(int i, int j);
  10. }
  11. private Complex(){
  12. this(0); // invokes Complex(int i);
  13. }
  14. @Override
  15. public String toString(){
  16. return this.a + ” + ” + this.b + “i”;
  17. }
  18. public static void main( String[] args ) {
  19. Complex c1 = new Complex(2, 3);
  20. Complex c2 = new Complex(3);
  21. Complex c3 = new Complex();
  22. System.out.println(c1);
  23. System.out.println(c2);
  24. System.out.println(c3);
  25. }
  26. }

خروجی

۲ + ۳i

۳ + ۳i

۰ + ۰i

در برنامه بالا ، مهم نیست که در هنگام معرفی شیء کدام سازنده فراخوانی می شود ، در نهایت سازنده پارامتری صدا زده می شود.

هنگام استفاده از ()this باید مراقب باشید. سازنده هایی که ()this را صدا می زنند به کندی اجرا می شوند زیرا صدا زدن سازنده اضافه دیگر سربار اضافه می کند. اگر کلاس شما فقط برای ایجاد تعداد انگشت شماری از اشیاء استفاده می شود ، استفاده از ()this مفید است. یکی دیگر از مزیت های بزرگ استفاده از ()this کاهش میزان کد کپی و تکراری است.

۳- ارسال this به عنوان آرگومان

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

  1. class ThisExample {
  2. int x;
  3. int y;
  4. ThisExample(int x, int y) {
  5. this.x = x;
  6. this.y = y;
  7. System.out.println(“Before passing this to addTwo() method:”);
  8. System.out.println(“x = ” + this.x + “, y = ” + this.y);
  9. addTwo(this);
  10. System.out.println(“After passing this to addTwo() method:”);
  11. System.out.println(“x = ” + this.x + “, y = ” + this.y);
  12. }
  13. void addTwo(ThisExample o){
  14. o.x += 2;
  15. o.y += 2;
  16. }
  17. }
  18. class Demo {
  19. public static void main( String[] args ) {
  20. ThisExample obj = new ThisExample(1, -2);
  21. }
  22. }

خروجی

Before passing this to addTwo() method:

x = 1, y = -2

After passing this to addTwo() method:

x = 3, y = 0

در اینجا ، متد ()addTwo با this به عنوان یک آرگومان از داخل سازنده صدا زده می شود.

profile name
تیم تولید محتوا

بخندید کتاب بخونید و خوب باشید تا جامعه مون به آرامش برسه. لطفا ! هر سوالی دارید در بخش نظرات مطرح کنید. ما یا سایر هموطنان عزیز پاسخ خواهیم داد. برای کمک به سایت ما و گسترش آموزش در بین هموطنان، در سایتها، وبلاگ ها و شبکه های اجتماعی لینک سایت ما را درج کنید.

مطالب پیشنهادی برای شما

محصولات مرتبط

مشاهده همه

دیدگاهتان را بنویسید

1 2 3 4 5

0 نظر درباره «آموزش کلید واژه ی this در جاوا (به زبان ساده)»

    هنوز نظری برای این بخش ثبت نشده است
مشاهده همه نظرات
سبد خرید
سبد خرید شما خالی است
× جهت نصب روی دکمه زیر در گوشی کلیک نمائید
آی او اس
سپس در مرحله بعد برروی دکمه "Add To Home Screen" کلیک نمائید