+1 امتیاز
قبل در برنامه نویسی توسط (922 امتیاز)
در جاوا Anonymous Classe چیست و چه تفاوتی با Nested Classes دارد؟ کاربرد هر کدام چیست؟

1 پاسخ

+3 امتیاز
قبل توسط (402 امتیاز)
انتخاب شده قبل توسط
 
بهترین پاسخ

تفاوت میان inner و nested را که قبلا دوستان توضیح داده اند، anonymous هم نوعی از inner class ها می باشد که در ابتدا شبیه نوعی خلاصه نویسی مطرح می شود مانند مثال زیر (کاربرد های دقیق تر را جلوتر می گویم):

به جای نوشتن

public class WindowClosingAdapter extends WindowAdapter {
     public void windowClosing( WindowEvent e ) {
         System.exit(0);
     } 
 }


 ...

 addWindowListener( new WindowClosingAdapter() );

می نویسیم:

addWindowListener( 
     new WindowAdapter() {
         public void windowClosing( WindowEvent e ) {
             System.exit(0); 
         } 
     });

در روش فوق به جای این که ابتدا یک کلاس تعریف کنیم که از WindowsAdapter ارث بری کرده باشد و سپس تابع windowClosing را به آن اضافه (یا override) کنیم، همه را یک جا انجام داده ایم، با تعریف یک رفرنس از کلاس پایه و اضافه کردن تابع مورد نظر در آن به عنوان یک پارامتر در تابع addWindowListener. این کلاس WindowClosingAdapter را که در حالت دوم نامی از آن نبرده ایم anonymous یا ناشناخته می گویند.

این روش تعریف inner class علاوه بر کاربردهای عام کلاس های داخلی، دو کاربرد و مزیت زیر را هم دارد:

1- استفاده از آن ها برای ایجاد چیزی شبیه closureها

2- استفاده ی رایج: راه حلی کوتاه و خلاصه برای تعریف یک کلاس داخلی محلی و ایجاد یک instance از آن.

 

سوالات مشابه

+1 امتیاز
1 پاسخ 1.6هزار بازدید
0 امتیاز
0 پاسخ 359 بازدید
0 امتیاز
1 پاسخ 599 بازدید
0 امتیاز
1 پاسخ 82 بازدید
سوال شده 5 ماه قبل در برنامه نویسی توسط Soraya2 (0 امتیاز)
0 امتیاز
1 پاسخ 133 بازدید
0 امتیاز
0 پاسخ 240 بازدید
0 امتیاز
0 پاسخ 189 بازدید
+1 امتیاز
2 پاسخ 262 بازدید
سوال شده 2 سال قبل در برنامه نویسی توسط masoud shahhosseini_ (45 امتیاز)
+1 امتیاز
1 پاسخ 833 بازدید
...