کلاس‌های داخلی

از ویکی‌کد
(تغییرمسیر از کلاس‌های داخلی جاوا)
پرش به ناوبری پرش به جستجو
Main Page Tutorial
Java-menu.jpeg
خانه
متدها در جاوا
کلاس‌ها در جاوا
۱برنامه‌نویسی شیءگرایی
۲کلاس‌ها و اشیاء
۳خاصیت‌های کلاس
۴متدهای کلاس
۵سازنده‌ها
۶Modifier ها
۷کپسوله‌سازی
۸پکیج‌ها
۹ارث بری
۱۰چند ریختی
۱۱کلاس‌های داخلی
۱۲مفهوم انتزاعی
۱۳رابط‌ها
۱۴Enum ها
۱۵دریافت اطلاعات از کاربر
۱۶تاریخ و زمان
۱۷ArrayList
۱۸HashMap
۱۹کلاس‌های Wrapper
۲۰خطاهای جاوا
فایل‌ها در جاوا
مرجع جاوا
مثال‌های جاوا

در جاوا، ایجاد یک کلاس تو در تو (یک کلاس درون کلاس دیگر) ممکن است. هدف کلاس‌های تو در تو، گروه‌بندی کلاس‌هایی است که به یکدیگر مرتبط‌اند، این کار کد شما را خواناتر و بهتر می‌کند. [۱]

برای دسترسی به کلاس داخلی، یک شیء از کلاس خارجی بسازید، و سپس یک شیء از کلاس داخلی بسازید:

مثال

 1 class OuterClass {
 2   int x = 10;
 3 
 4   class InnerClass {
 5     int y = 5;
 6   }
 7 }
 8 
 9 public class MyMainClass {
10   public static void main(String[] args) {
11     OuterClass myOuter = new OuterClass();
12     OuterClass.InnerClass myInner = myOuter.new InnerClass();
13     System.out.println(myInner.y + myOuter.x);
14   }
15 }
16 
17 // Outputs 15 (5 + 10)


مشاهدهٔ نتیجه


کلاس های داخلی خصوصی (به انگلیسی: Private)

برخلاف یک کلاس «با قاعده»، یک کلاس داخلی می‌تواند از نوع privateیا protected باشد. اگر شما نمی‌خواهید که اشیاء خارجی به کلاس داخلی دسترسی داشته باشند، کلاس را به صورت خصوصی (به انگلیسی: private) تعریف کنید:

مثال

 1 class OuterClass {
 2   int x = 10;
 3 
 4   private class InnerClass {
 5     int y = 5;
 6   }
 7 }
 8 
 9 public class MyMainClass {
10   public static void main(String[] args) {
11     OuterClass myOuter = new OuterClass();
12     OuterClass.InnerClass myInner = myOuter.new InnerClass();
13     System.out.println(myInner.y + myOuter.x);
14   }
15 }

اگر شما سعی کنید به یک کلاس داخلی خصوصی از خارج کلاس (MyMainClass) دسترسی پیدا کنید، خطا رخ می‌دهد:

Terminal.png Private Inner Class


مشاهدهٔ نتیجه


کلاس داخلی Static

یک کلاس داخلی می‌تواند از نوع static نیز باشد، که به معنای آن است که شما می‌توانید بدون ساختن شیء از کلاس خارجی، به کلاس داخلی دسترسی پیدا کنید:

مثال

 1 class OuterClass {
 2   int x = 10;
 3 
 4   static class InnerClass {
 5     int y = 5;
 6   }
 7 }
 8 
 9 public class MyMainClass {
10   public static void main(String[] args) {
11     OuterClass.InnerClass myInner = new OuterClass.InnerClass();
12     System.out.println(myInner.y);
13   }
14 }
15 
16 // Outputs 5


مشاهدهٔ نتیجه

نکته: همانند متدها و خاصیت‌های static، یک کلاس static به اعضای کلاس خارجی دسترسی ندارد.

دسترسی به کلاس خارجی از کلاس داخلی

یک مزیت از کلاس‌های داخلی، این است که آنها می‌توانند به خاصیت‌ها و متدهای کلاس خارجی دسترسی پیدا کنند:

مثال

 1 class OuterClass {
 2   int x = 10;
 3 
 4   class InnerClass {
 5     public int myInnerMethod() {
 6       return x;
 7     }
 8   }
 9 }
10 
11 public class MyMainClass {
12   public static void main(String args[]) {
13     OuterClass myOuter = new OuterClass();
14     OuterClass.InnerClass myInner = myOuter.new InnerClass();
15     System.out.println(myInner.myInnerMethod());
16   }
17 }
18 
19 // Outputs 10


مشاهدهٔ نتیجه


منابع آموزشی