آموزشگاه برنامه نویسی تحلیل داده
آموزشگاه برنامه نویسی تحلیل داده

آموزش Java – کلاس تودرتو محلی/Local inner class در Java

دوره های مرتبط با این مقاله

آموزش Java – کلاس تودرتو محلی/Local inner class در Java

کلاسی که در سطح کلاس دیگر و داخل بدنه ی یکی از متدهای آن تعریف شده باشد، در اصطلاح کلاس تودرتو محلی/inner local class خوانده می شود. به منظور فراخوانی متدهای این نوع کلاس بایستی از این کلاس داخل بدنه ی متد نمونه سازی نمایید.

مثال کاربردی از کلاس تودرتو ی محلی در Java (local inner class)

public class localInner1{  
private int data=30;//instance variable  
void display(){  
class Local{  
void msg(){System.out.println(data);}  
}  
Local l=new Local();  
l.msg();  
}  
public static void main(String args[]){  
localInner1 obj=new localInner1();  
obj.display();  
}  
}  

خروجی:

30

کلاس و کد داخلی که کامپایلر تولید می کند

در چنین شرایطی کامپایلر یک کلاس به نام Simple$1Local ایجاد می کند که محتوای کلاس میزبان (outer class) را در خود ذخیره کرده و به آن اشاره می کند.

import java.io.PrintStream;  
class localInner1$Local  
{  
final localInner1 this$0;  
localInner1$Local()  
{     
super();  
this$0 = Simple.this;  
}  
void msg()  
{  
System.out.println(localInner1.access$000(localInner1.this));  
}  
}  
نکته:

متغیر محلی (Local) نمی تواند به صورت private، public یا protected تعریف شود.

نکاتی درباره ی local inner class/کلاس تودرتو تعریف شده در بدنه ی متد

  1. کلاس تودرتو تعریف شده در بدنه ی متد نمی تواند از بیرون متد میزبان خود فراخوانی شود.
  2. کلاس تودرتو تعریف شده در بدنه ی متد تا ویرایش 1.7 مجموعه ابزار برنامه نویسی جاوا/JDK قابلیت دسترسی به متد غیر final محلی (non-final local variable) را نداشت. از ویرایش 1.8 به بعد JDK این امکان فراهم شده تا به متغیر محلی غیر final در کلاس تودرتوی محلی نیز دسترسی داشت.

مثال کاربردی از کلاس تودرتوی تعریف شده در بدنه ی متد (local inner class) با متغیر محلی (local variable)

در زیر همان طور که مشاهده می کنید مقدار متغیر value در اختیار متد msg() از کلاس تودرتوی محلی قرار گرفته و در خروجی چاپ شده است.

class localInner2{  
 private int data=30;//instance variable  
 void display(){  
  int value=50;//local variable must be final till jdk 1.7 only  
  class Local{  
   void msg(){System.out.println(value);}  
  }  
  Local l=new Local();  
  l.msg();  
 }  
 public static void main(String args[]){  
  localInner2 obj=new localInner2();  
  obj.display();  
 }  
}  

خروجی:

50
  • 933
  •    676
  • تاریخ ارسال :   1396/08/03

دانلود PDF دانشجویان گرامی اگر این مطلب برای شما مفید بود لطفا ما را در GooglePlus محبوب کنید
رمز عبور: tahlildadeh.com یا www.tahlildadeh.com
ارسال دیدگاه نظرات کاربران
شماره موبایل دیدگاه
عنوان پست الکترونیک

ارسال

آموزشگاه برنامه نویسی تحلیل داده
آموزشگاه برنامه نویسی تحلیل داده

تمامی حقوق این سایت متعلق به آموزشگاه تحلیل داده می باشد .