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



  • ۱۴
  • مهر

جلسه ۲۵ : اینترفیس در جاوا

  • دسته‌بندی‌ها :
جلسه ۲۵ : اینترفیس در جاوا
    • جزئیات
    • نوع محتواآموزش تصویری

      مقدمه

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

      آشنایی با اینترفیس در جاوا

      در ادامه ی مباحث فوق ما شما را با ساختار و طرز استفاده از Interface در جاوا آشنا خواهیم کرد.

      مقایسه اینترفیس با کلاس

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

      • یک اینترفیس می تواند شامل هر تعداد متد باشد.
      • یک اینترفیس در یک فایل با یک افزونه .java نوشته شده است، با نام اینترفیس که با نام فایل مشخص شده است.
      • کد بایت یک اینترفیس در یک فایل .class نمایش داده می شود.
      • اینترفیس ها در بسته ها ظاهر می شود.

      یک اینترفیس در جاوا در موارد زیر با ساختار کلاس در جاوا متفاوت است:

      • شما نمی توانید یک اینترفیس را اکتیو کنید.
      • یک اینترفیس هیچ سازنده ای ندارد.
      • همه متدها در یک نوع انتزاعی هستند.
      • یک اینترفیس نمی تواند شامل فیلدهایی باشد. تنها فیلدهایی که می توانند در یک اینترفیس ظاهر شوند باید بصورت ثابت و نهایی اعلام شوند.
      • یک اینترفیس توسط یک کلاس گسترش نمی یابد؛ و فقط توسط یک کلاس اجرا می شود.
      • یک اینترفیس می تواند اینترفیس های متعدد را گسترش دهد.

      نحوه ی اعلام Interface در جاوا

      در جاوا برای اعلام و تعریف یک اینترفیس از کلمه ی کلیدی interface استفاده می شود.

      مثال :

      مثال : 

      Interface در جاوا شامل خصوصیات زیر است:

      • یک اینترفیس به طور ضمنی انتزاعی است، و نیازی نیست که از کلمه ی کلیدی abstract استفاده کنید.
      • هر متد در یک اینترفیس نیز به طور ضمنی انتزاعی است، بنابراین در این مورد نیز به کلید واژه abstract  مورد نیاز نیست.
      • متدها در یک اینترفیس به طور ضمنی عمومی هستند.

      مثال:

      مثال : 

      پیاده سازی اینترفیس در جاوا

      هنگامی که یک کلاس یک اینترفیس را اجرا می کند می توانید تعیین کنید که رفتارهای خاص اینترفیس را اجرا کنید.

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

      یک کلاس از کلید واژه implements برای پیاده سازی یک اینترفیس استفاده می کند.

      کلمات کلیدی implements در اعلامیه کلاس زیر بخش گسترش اعلان ظاهر می شود.

      مثال:

      مثال : 

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

      مثال : 

      زمانیکه متدهای overriding در یک اینترفیس تعریف می شود، قوانین زیر را خواهید داشت:

      • خطاهای بررسی شده نباید غیر از مواردی که توسط متد اینترفیس اعلام شده، اعلام شود.
      • امضاي متد اینترفیس و همان نوع بازگشت يا نوع زير را بايد در هنگام بروز متدها حفظ کرد.
      • یک کلاس خود می تواند انتزاعی باشد و اگر چنین باشد، متد های رابط کاربری لازم نیست اجرا شود.

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

      • یک کلاس می تواند بیش از یک اینترفیس را در یک زمان اجرا کند.
      • یک کلاس می تواند تنها یک کلاس را گسترش دهد، اما می تواند چندین اینترفیس را اجرا کند.
      • یک اینترفیس می تواند یک اینترفیس دیگر را گسترش دهد، به همان شیوه ای که یک کلاس می تواند کلاس دیگری را گسترش دهد.

      گسترش اینترفیس ها

      یک رابط می تواند یک رابط دیگر را به همان شیوه ای که یک کلاس می تواند یک کلاس دیگر را گسترش دهد، گسترش دهد.

      کلمه ی کلیدی extends برای گسترش یک اینترفیس استفاده می شود، و اینترفیس فرزند متدهای اینترفیس والد را به ارث می برد.

      در نمونه ی زیر اینترفیس Sports توسط اینترفیس های Hockey و Football گسترش یافته است:

      مثال : 

      اینترفیس Hockey دارای چهار متد است ، اما این دو را از Sports به ارث می برد.

      کلاسی که Hockey را پیاده سازی می کند، نیاز به اجرای تمام شش متد دارد.

      به طور مشابه، کلاسی Football را اجرا می کند، نیاز به تعریف سه متد از Football و دو متد Sports دارد.

      گسترش اینترفیس چندگانه

      یک کلاس در جاوا می تواند تنها یک کلاس والد خود را گسترش دهد و ارث بری چندگانه مجاز نیست.

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

      برای مثال اگر اینترفیس Hockey هر دوی Sports و Event را گسترش دهد به صورت زیر خواهد بود:

      مثال : 

      برچسب گذاری اینترفیس ها

      شایع ترین استفاده از گسترش اینترفیس ها زمانی اتفاق می افتد که اینترفیس والد هیچ متدی ایفا نمی کند. به عنوان مثال، اینترفیس MouseListener در بسته java.awt.event extended java.util.EventListener، بصورت زیر تعریف می شود:

      مثال : 

      اینترفیس بدون هیچ متدی در آن به عنوان یک اینترفیس برچسب گذاری اشاره شده است.

      دو هدف اساسی برای طراحی برچسب های اینترفیس وجود دارد:

      • ایجاد یک والد عمومی :

      همانطور که اینترفیس EventListener که توسط ده ها اینترفیس دیگر در API جاوا گسترش می یابد، می توانید از یک اینترفیس برچسب گذاری برای ایجاد یک والد مشترک در میان گروهی از اینترفیس ها استفاده کنید.

      • افزودن نوع داده به کلاس :

      این وضعیتی است که اصلاح برچسب گذاری در آن اتفاق می افتد.

      کلام آخر

      در این مباحث مفهوم Interface در جاوا را مطرح کردیم و همانطور که چکیده ی مطالب نشان می دهد اینترفیس در واقع شبیه یک کلاس است با این تفاوت که همانند کلاس دارای فیلد ، سازنده و قابلیت اکتیو شدن نیست اما بر خلاف کلاس می تواند اینترفیس های متعددی را گسترش دهد.

      امیدواریم که از مباحث اینترفیس در جاوا به خوبی استفاده کرده باشید، در بخش بعدی پکیج ها در جاوا را بررسی می کنیم.

      QR:  جلسه ۲۵ : اینترفیس در جاوا
      به اشتراک بگذارید