دوره های آموزشی آکادمی پی وی لرن (پروژه محور و ویژه بازار کار)



  • ۱۴
  • مهر

جلسه ۱۹ : کلاس های داخلی در جاوا

  • دسته‌بندی‌ها :
جلسه ۱۹ : کلاس های داخلی در جاوا
    • جزئیات
    • نوع محتواآموزش تصویری

      مقدمه

      با عرض سلام و وقت بخیر خدمت کاربران سایت پی وی لرنو کاربرانی که دوره کامل آموزش برنامه نویسی جاوا را دنبال می کنند. تاکنون شما را با چگونگی تعریف و استفاده از کلاس ها در جاوا آشنا کردیم. و با انواع سطوح دسترسی در جاوا نیز آشنا شدیم. گاهی اوقات شما نیاز پیدا می کنید که کلاس هایی را به صورت تو در تو در داخل کلاس های دیگری تعریف کنید. این کلاس های داخلی که nested class نامیده می شوند، نیز در سطوح دسترسی مختلفی قابل تعریف و دسترسی هستند. برای آشنایی بیشتر با کلاس های داخلی در جاوا و کلاس های تو در تو در جاوا  ادامه ی مباحث این آموزش را دنبال کنید.

      کلاس های داخلی در جاوا

      در ادامه ی این مباحث ما شما را با ساختار و انواع کلاس های داخلی در جاوا آشنا خواهیم کرد.

      nested class (کلاس های تو در تو)

      در جاوا، درست مثل متدها، متغیرهای یک کلاس می توانند یک کلاس دیگر را به عنوان عضو خود داشته باشند.

      نوشتن یک کلاس درون دیگر کلاس ها در جاوا مجاز است. کلاس نوشته شده در درون کلاس دیگر nested class نامیده می شود

      و کلاسی که دارای کلاس داخلی است، outer class یا کلاس بیرونی نامیده می شود.

      برای مثال کد زیر نمونه ای از ایجاد یک کلاس داخلی بوده که Outer_Demo کلاس بیرونی و Inner_Demo کلاس داخلی است:

      مثال : 

      کلاس های تودرتو در دو نوع تقسیم می شوند:

      • Non-static nested classes:

      این شامل اعضای غیر استاتیکی یک کلاس است.

      • Static nested classes:

      این شامل اعضای ایستا یک کلاس است.

      کلاس های داخلی در جاوا

      کلاس های داخلی در جاوا

      کلاس های داخلی (Non-static nested classes)

      کلاس های داخلی یک مکانیزم امنیتی در جاوا هستند.

      ما می توانیم کلاسی را در سطح دسترسی خصوصی یا… در جاوا تعریف کنیم در حالی که کلاس بیرونی عمومی ، خصوصی یا و… باشد.

      طبقات داخلی از سه نوع بسته به نحوه و مکان آنها تعریف می شود. آن ها هستند:

      • Inner Class
      • Method-local Inner Class
      • Anonymous Inner Class

      کلاس داخلی

      ایجاد یک کلاس درونی بسیار ساده است. شما فقط باید یک کلاس را در داخل یک کلاس دیگر بنویسید.

      برخلاف یک کلاس والد، یک کلاس داخلی می تواند خصوصی باشد.

      هنگامی که کلاس داخلی را خصوصی اعلام می کنید، نمی توان از یک شیء خارج از کلاس به آن دسترسی پیدا کرد.

      در ادامه برنامه ای برای ایجاد یک کلاس داخلی و دسترسی به آن آورده ایم.

      کلاس داخلی را خصوصی سازی می کنیم و از طریق یک متد به کلاس دسترسی پیدا می کنیم.

      مثال:

      مثال : 

      در کد فوق می توانید ببینید که Outer_Demo کلاس بیرونی و Inner_Demo یک کلاس داخلی است.

      () display_Inner متدی است که ما در آن کلاسی را اکتیو می کنیم، و این متد از متد اصلی فراخوانی می شود.

      اگر برنامه فوق را کامپایل و اجرا کنید، نتیجه زیر را خواهید گرفت:

      مثال : 

      دسترسی به اعضای خصوصی (private)

      همانطور که قبلا ذکر شد، کلاس های داخلی نیز برای دسترسی به اعضای خصوصی یک کلاس استفاده می شود.

      فرض کنید یک کلاس دارای اعضای خصوصی برای دسترسی به آنها است.

      با استفاده از کلاس () getValue می توانیم یک کلاس داخلی بنویسیم.

      برای ترسیم کلاس درونی، ابتدا باید کلاس بیرونی را در نظر بگیرید.

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

      مثال : 

      برنامه زیر نشان می دهد که چگونه با استفاده از کلاس داخلی به اعضای خصوصی یک کلاس دسترسی پیدا کنیم.

      مثال:

      مثال : 

      پس از کامپایل و اجرای کد فوق در جاوا، نتیجه ی زیر را مشاهده خواهید کرد:

      مثال : 

      متد محلی کلاس داخلی

      در جاوا، می توانیم یک کلاس را در یک متد بنویسیم و این یک نوع محلی خواهد بود. همانند متغیرهای محلی، محدوده کلاس داخلی در متد محدود می شود.

      یک کلاس داخلی متد می تواند فقط در متد تعریف شده در کلاس تعریف شود.

      برنامه زیر نشان می دهد که چگونه از یک کلاس درونی متد محلی استفاده کنید:

      مثال : 

      نتیجه ی کامپایل و اجرای کد فوق در جاوا بصورت زیر خواهد بود:

      مثال : 

      کلاس داخلی ناشناس

      یک کلاس داخلی بدون نام به عنوان یک کلاس داخلی ناشناس (anonymous inner class) شناخته می شود.

      از کلاس های ناشناس هر زمان که به لغو یک متد کلاس یا رابط کاربری نیاز دارید می توانید استفاده کنید.

      ساختار تعریف یک کلاس داخلی ناشناس بصورت زیر است:

      مثال : 

      برنامه زیر نشان می دهد چگونه با استفاده از یک کلاس داخلی ناشناس متد کلاس را لغو کنید:

      مثال : 

      نتیجه ی کامپایل و اجرای کد فوق در جاوا بصورت زیر خواهد بود:

      مثال : 

      کلاس داخلی ناشناس به عنوان آرگومان

      شما می توانید کلاس داخلی ناشناس را به متد انتقال دهید. در اینجا ساختار ارسال یک کلاس داخلی ناشناس به عنوان یک متد ارائه شده است:

      مثال : 

      برنامه زیر نشان می دهد که چگونه یک کلاس داخلی ناشناس را به عنوان یک آرگومان متد انتقال دهید:

      مثال : 

      نتیجه ی کامپایل و اجریا کد فوق در جاوا بصورت زیر خواهد بود:

      مثال : 

      کلاس داخلی استاتیک

      یک کلاس درونی استاتیک در واقع یک کلاس داخلی تودرتو است که به عنوان یک عضو ثابت از کلاس بیرونی است.

      این کلاس می تواند بدون اکتیو کردن کلاس بیرونی، با استفاده از سایر اعضای استاتیک قابل دسترسی باشد.

      ساختار کلاس داخلی استاتیک بصورت زیر می باشد:

      مثال : 

      اکتیو کردن یک کلاس استاتیک ، کمی متفاوت از نمونه سازی یک کلاس درونی است.

      برنامه زیر نشان می دهد که چگونه از کلاس کششی استاتیک استفاده کنید:

      مثال : 

      نتیجه ی کامپایل و اجرای کد فوق در جاوا بصورت زیر خواهد بود:

      مثال : 

      کلام آخر

      جاوا به شما اجازه می دهد تا همانند تعریف متغیر ، متد ، حلقه های تکرار و … کلاس ها را نیز بصورت تو در تو و داخلی تعریف نمائید. در هنگام تولید و توسعه یک برنامه با جاوا به احتمال زیاد شما به تعریف کلاس های داخلی نیاز خواهی داشت از این رو ر این بخش به مباحث آشنایی با کلاس های داخلی در جاوا پرداختیم.

      QR:  جلسه ۱۹ : کلاس های داخلی در جاوا
      به اشتراک بگذارید