+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 پاسخ 349 بازدید
0 امتیاز
1 پاسخ 583 بازدید
0 امتیاز
1 پاسخ 70 بازدید
سوال شده 3 ماه قبل در برنامه نویسی توسط Soraya2 (0 امتیاز)
0 امتیاز
1 پاسخ 125 بازدید
0 امتیاز
0 پاسخ 231 بازدید
0 امتیاز
0 پاسخ 180 بازدید
+1 امتیاز
2 پاسخ 243 بازدید
سوال شده 2 سال قبل در برنامه نویسی توسط masoud shahhosseini_ (45 امتیاز)
+1 امتیاز
1 پاسخ 806 بازدید
...