تعداد بازدید: 2085

کلمه کلیدی this در جاوا

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

به طور کلی ما با کلمه کلیدی this می تونیم به محتوی کلاسمون اشاره کنیم (در خود کلاس) نظیر متغیر متد و سازنده.

اشاره به متغیر نمونه (instance) در جاوا

مثال:

public class student {
    int student_id;
    String firstname;
    String lastname;
    String univercity = "imamreza.ac";

    public student(int student_id, String firstname, String lastname){
        this.student_id = student_id;
        this.firstname = firstname;
        this.lastname = lastname;
    }

    public void welcome(){
        System.out.println("welcome " + firstname + " " + lastname + "(" + student_id + ") from " + univercity + " univercity" );
    }
}

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

نکته :‌ اگر نام متغیر نمونه یکتا باشد (یعنی متغیر محلی هم نام با متغیر نمونه نداشته باشیم) بدون گذاشتن کلمه کلیدی this هم می توان از این متغیر استفاده کرد(کامپایلر این کار را برای ما می کند).

اشاره به شی جاری

اگر شی جاری را با این مثال چاپ کنیم:

کلاس A :

public class A {
    public void show(){
        System.out.println(this);
    }
}

کلاس ‌B :

public class B {
    public static void main(String args[]){
        A obj = new A();
        obj.show();
    }
}

در کلاس A یک متد تعریف کردیم که شی جاری رو برای ما نمایش میده و در کلاس B هم متد show رو به وسیله شی obj فراخوانی کردیم . خروجی به شکل زیر خواهد بود :

com.example.A@74a14482

@74a14482 یک reference هست که با کاراکتر @ به ما نمایش داده میشه . (همونطور که گفتیم this یک اشاره گر به شی است)

اشاره به متد (method)

مثال:

کلاس A :

public class A {
    public void c(){
        System.out.println("show c method in class");
    }
    public void d(){
        this.c();
    }
}

کلاس B :

public class B {
    public static void main(String args[]){
        A obj = new A();
        obj.d();
    }

}

خوب در این مثال ما متد c رو ساختیم که یک متن رو چاپ می کنه و متد d رو ساختیم که متد c رو فراخوانی می کنه و در نهایت به وسیله شی obj متد d رو فراخوانی کردیم که نتیجه این شد :

show c method in class

اصطلاحات actual parameter و formal parameters

actual parameter : پارامتر هایی که در زمان فراخوانی تابع به آن می دهیم (نام دوم آن Argument هست)

formal parameter : پارامتر هایی که در زمان تعریف تابع معین می کنیم.

زباله روب (garbage collected)

در زمان اجرای برنامه اشیایی که دیگر به مکانی از حافظه heap اشاره ندارند پاک می شوند . این کار باعث می شود که برنامه نویس بیشتر روی قسمت تجاری برنامه خود تمرکز کند تا مدیریت حافظه.

روال ساخت یک شی در جاوا

زمانی که شما یک شی رو به وسیله کلمه کلیدی new می سازید روال زیر طی می شود:

  • فضای لازم برای داده ها (فیلد ها یا instance variable ) تخصیص داده می شود.فضایی برای داده های اشتراکی یا متغیر های استاتیک هم تخصیص داده می شود. و در نهایت اشاره گر به شی تازه ساخته شده در حافظه ارجاع داده می شود.
  • متد سازنده فراخوانی می شود.
  • زباله روب یا garbage colleted برای reference هایی که دیگر به جایی اشاره ندارند اعمال می شود.

اشتراک گذاری :

مدیر وب سایت گنوتک . برنامه نویسی رو با زبان C در هفده سالگی شروع کردم . در حال حاضر به برنامه نویسی php برپایه معماری MVC , HMVC و همچنین سیستم مدیریت محتوای WordPress و فریم ورک محبوب لاراول علاقه مند هستم و دوست دارم اطلاعاتم رو با شما به اشتراک بگذارم.

۰ دیدگاه برای کلمه کلیدی this در جاوا

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

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *