با عرض سلام و وقت بخیر خدمت کاربران سایت پی وی لرن. و کاربرانی که دوره کامل آموزش برنامه نویسی جاوا را دنبال می کنند. یک رابط یا Interface در جاوا یک مرجع در جاوا است. این تکنیک شبیه به ساختار کلاس است. یک کلاس یک اینترفیس را اجرا می کند، به این ترتیب متد انتزاعی اینترفیس را به ارث می برد. همراه با متد انتزاعی، یک رابط همچنین ممکن است شامل ثابت، متد پیش فرض، متد های استاتیک و انواع توزیع باشد. نوشتن یک اینترفیس در جاوا شبیه به نوشتن یک کلاس است. با این تفاوت که یک کلاس خصیصه ها و رفتارهای یک شی ء را توصیف می کند. اما یک اینترفیس شامل رفتارهایی است که یک کلاس را پیاده سازی می کند. برای آشنایی با اینترفیس در جاوا یا Interface در جاوا در ادامه ی مباحث با ما همراه باشید.
در ادامه ی مباحث فوق ما شما را با ساختار و طرز استفاده از Interface در جاوا آشنا خواهیم کرد.
یک Interface در جاوا در موارد زیر با ساختار کلاس در جاوا مشترک است:
یک اینترفیس در جاوا در موارد زیر با ساختار کلاس در جاوا متفاوت است:
در جاوا برای اعلام و تعریف یک اینترفیس از کلمه ی کلیدی interface استفاده می شود.
مثال :
1 2 3 4 5 | import java.lang.*; /*درج importهای مربوطه */ public interface NameOfInterface { /*درج فیلد و متدهای انتزاعی مربوطه*/ } |
Interface در جاوا شامل خصوصیات زیر است:
مثال:
1 2 3 4 5 | /* File name : Animal.java */ interface Animal { public void eat(); public void travel(); } |
هنگامی که یک کلاس یک اینترفیس را اجرا می کند می توانید تعیین کنید که رفتارهای خاص اینترفیس را اجرا کنید.
اگر یک کلاس تمام رفتارهای اینترفیس را انجام ندهد، این کلاس باید خودش را انتزاع کند.
یک کلاس از کلید واژه implements برای پیاده سازی یک اینترفیس استفاده می کند.
کلمات کلیدی implements در اعلامیه کلاس زیر بخش گسترش اعلان ظاهر می شود.
مثال:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | public class MammalInt implements Animal { public void eat() { System.out.println("Mammal eats"); } public void travel() { System.out.println("Mammal travels"); } public int noOfLegs() { return 0; } public static void main(String args[]) { MammalInt m = new MammalInt(); m.eat(); m.travel(); } } |
نتیجه ی اجرای کد فوق در جاوا بصورت زیر خواهد بود:
1 2 | Mammal eats Mammal travels |
زمانیکه متدهای overriding در یک اینترفیس تعریف می شود، قوانین زیر را خواهید داشت:
در هنگام پیاده سازی اینترفیس در جاوا قوانین زیر را خواهید داشت:
یک رابط می تواند یک رابط دیگر را به همان شیوه ای که یک کلاس می تواند یک کلاس دیگر را گسترش دهد، گسترش دهد.
کلمه ی کلیدی extends برای گسترش یک اینترفیس استفاده می شود، و اینترفیس فرزند متدهای اینترفیس والد را به ارث می برد.
در نمونه ی زیر اینترفیس Sports توسط اینترفیس های Hockey و Football گسترش یافته است:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | public interface Sports { public void setHomeTeam(String name); public void setVisitingTeam(String name); } public interface Football extends Sports { public void homeTeamScored(int points); public void visitingTeamScored(int points); public void endOfQuarter(int quarter); } public interface Hockey extends Sports { public void homeGoalScored(); public void visitingGoalScored(); public void endOfPeriod(int period); public void overtimePeriod(int ot); } |
اینترفیس Hockey دارای چهار متد است ، اما این دو را از Sports به ارث می برد.
کلاسی که Hockey را پیاده سازی می کند، نیاز به اجرای تمام شش متد دارد.
به طور مشابه، کلاسی Football را اجرا می کند، نیاز به تعریف سه متد از Football و دو متد Sports دارد.
یک کلاس در جاوا می تواند تنها یک کلاس والد خود را گسترش دهد و ارث بری چندگانه مجاز نیست.
با این وجود اینترفیس ها کلاس نیستند و یک اینترفیس می تواند بیش از یک اینترفیس والد را گسترش دهد.
برای مثال اگر اینترفیس Hockey هر دوی Sports و Event را گسترش دهد به صورت زیر خواهد بود:
1 | public interface Hockey extends Sports, Event |
شایع ترین استفاده از گسترش اینترفیس ها زمانی اتفاق می افتد که اینترفیس والد هیچ متدی ایفا نمی کند. به عنوان مثال، اینترفیس MouseListener در بسته java.awt.event extended java.util.EventListener، بصورت زیر تعریف می شود:
1 2 3 | package java.util; public interface EventListener {} |
اینترفیس بدون هیچ متدی در آن به عنوان یک اینترفیس برچسب گذاری اشاره شده است.
دو هدف اساسی برای طراحی برچسب های اینترفیس وجود دارد:
همانطور که اینترفیس EventListener که توسط ده ها اینترفیس دیگر در API جاوا گسترش می یابد، می توانید از یک اینترفیس برچسب گذاری برای ایجاد یک والد مشترک در میان گروهی از اینترفیس ها استفاده کنید.
این وضعیتی است که اصلاح برچسب گذاری در آن اتفاق می افتد.
در این مباحث مفهوم Interface در جاوا را مطرح کردیم و همانطور که چکیده ی مطالب نشان می دهد اینترفیس در واقع شبیه یک کلاس است با این تفاوت که همانند کلاس دارای فیلد ، سازنده و قابلیت اکتیو شدن نیست اما بر خلاف کلاس می تواند اینترفیس های متعددی را گسترش دهد.
امیدواریم که از مباحث اینترفیس در جاوا به خوبی استفاده کرده باشید، در بخش بعدی پکیج ها در جاوا را بررسی می کنیم.