+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.5هزار بازدید
0 امتیاز
0 پاسخ 260 بازدید
0 امتیاز
1 پاسخ 480 بازدید
0 امتیاز
1 پاسخ 32 بازدید
0 امتیاز
0 پاسخ 37 بازدید
0 امتیاز
0 پاسخ 78 بازدید
+1 امتیاز
1 پاسخ 197 بازدید
سوال شده 2 سال قبل در برنامه نویسی توسط masoud shahhosseini_ (45 امتیاز)
+1 امتیاز
1 پاسخ 659 بازدید
...