یک راه دیگر برای دستیابی به انتزاع در جاوا، رابطها است.
یک رابط
یک "کلاس انتزاعی" است
که برای گروه بندی متدهای مرتبط با بدنه های خالی استفاده می شود:
// interface
interface Animal {
public void animalSound(); // interface method (does not have a body)
public void run(); // interface method (does not have a body)
}
برای دسترسی به روش های رابط، رابط باید "پیاده سازی" شود
(مثلاً به ارث رسیده است) توسط کلاس دیگری با Implements
کلمه کلیدی (به جای extends
). بدن از
متد رابط توسط کلاس "implement" ارائه می شود:
// Interface
interface Animal {
public void animalSound(); // interface method (does not have a body)
public void sleep(); // interface method (does not have a body)
}
// Pig "implements" the Animal interface
class Pig implements Animal {
public void animalSound() {
// The body of animalSound() is provided here
System.out.println("The pig says: wee wee");
}
public void sleep() {
// The body of sleep() is provided here
System.out.println("Zzz");
}
}
class MyMainClass {
public static void main(String[] args) {
Pig myPig = new Pig(); // Create a Pig object
myPig.animalSound();
myPig.sleep();
}
}
انتزاعی
هستند وعمومی
عمومی
هستند،ایستا
و نهایی
1) برای دستیابی به امنیت - جزئیات خاصی را پنهان کنید و فقط موارد مهم را نشان دهید
جزئیات یک شی (رابط).
2) جاوا از "وارثت چندگانه" پشتیبانی نمی کند (یک کلاس فقط می تواند از یک سوپرکلاس ارث بری کند). با این حال، می توان به آن دست یافت
با رابطها، زیرا کلاس میتواند چندین رابط را پیادهسازی کند.
توجه: برای پیاده سازی چند رابط، آنها را با کاما جدا کنید (به مثال زیر مراجعه کنید).