مثال
یک رابط
یک "کلاس" انتزاعی است که برای گروه بندی روش های مرتبط با بدنه های "خالی" استفاده می شود:
برای دسترسی به روش های رابط، رابط باید "پیاده سازی" شود
(مثلاً به ارث رسیده است) توسط کلاس دیگری با Implements
کلمه کلیدی (به جای extends
). بدن از
متد رابط توسط کلاس "implement" ارائه می شود:
رابط
//
رابط حیوان {
public void animalSound(); // روش رابط (بدنه ندارد)
public void sleep(); // روش رابط (بدنه ندارد)
}
// Pig رابط Animal را "پیاده سازی" می کند
class Pig implements Animal {
public void animalSound() {
// بدنه animalSound() در اینجا ارائه شده است
System.out.println("خوک می گوید: وی وی");
}
عمومی void sleep() {
// body of sleep() در اینجا ارائه شده است
System.out.println("Zzz");
}
}
کلاس MyMainClass {
public static void main(string[] args) {
Pig myPig = new Pig(); // یک شی Pig ایجاد کنید
myPig.animalSound();
myPig.sleep();
}
}
تعریف و استفاده
کلمه کلیدی رابط
برای اعلام نوع خاصی از کلاس که فقط شامل متدهای انتزاعی است استفاده میشود.
برای دسترسی به روش های رابط، رابط باید "پیاده سازی" شود
(مثلاً به ارث رسیده) توسط کلاس دیگری با ابزارها
کلمه کلیدی (به جای extends
). بدن از
روش رابط توسط کلاس "implement" ارائه شده است.
یادداشت ها در مورد رابط ها:
- این نمی توان برای ایجاد اشیاء استفاده کرد (در مثال بالا،
امکان ایجاد یک شی "Animal" در MyMainClass وجود ندارد) - روشهای رابط بدنه ندارند -
بدنه توسط کلاس "implement" ارائه می شود - در اجرای یک رابط، باید همه روشهای آن را لغو کنید
- روش های رابط به طور پیش فرض
انتزاعی
هستند و
عمومی
- ویژگی های رابط به طور پیش فرض
عمومی
هستند،
ایستا
ونهایی
- یک رابط نمی تواند حاوی سازنده باشد (زیرا نمی توان از آن برای ایجاد اشیا استفاده کرد)
چرا و چه زمانی از رابط ها استفاده کنیم؟
برای دستیابی به امنیت - جزئیات خاصی را پنهان کنید و فقط موارد مهم را نشان دهید
جزئیات یک شی (رابط).
جاوا از "ارث بری چندگانه" پشتیبانی نمی کند (یک کلاس فقط می تواند از یک سوپرکلاس ارث بری کند). با این حال، می توان به آن دست یافت
با رابطها، زیرا کلاس میتواند چندین رابط را پیادهسازی کند.
توجه: برای پیاده سازی چند رابط، آنها را با کاما جدا کنید (به مثال زیر مراجعه کنید).
چند رابط
برای پیاده سازی چند رابط، آنها را با کاما از هم جدا کنید:
مثال
رابط FirstInterface {
public void myMethod(); // روش رابط
}
واسط SecondInterface {
public void myOtherMethod(); // روش رابط
}
// DemoClass "پیاده سازی" FirstInterface و SecondInterface
class DemoClass implements FirstInterface, SecondInterface {
public void myMethod() {
System.out.println ("برخی متن...");
}
public void myOtherMethod() {
System.out.println ("متن دیگر...");
}
}
کلاس MyMainClass {
public static void main(string[] args) {
DemoClass myObj = new DemoClass();
myObj.myMethod();
myObj.myOtherMethod();
}
}
صفحات مرتبط
در آموزش رابط جاوا ما درباره رابطها بیشتر بخوانید.