الـ Interface في الجافا
يسمى في اللغة العربية الواجهة Interface و هو شبيه من حيث البنية بالكلاس و يحتوي دوال مجردة من نوع abstract كما تعرفنا عليها بالدرس السابق, و ذكرنا بالدرس السابق أن كلمة مجرد abstract تعني أن الدالة او الكلاس الذي نوعه مجرد abstract أنه لا يحتوي كود فيستخدم للتصريح فقط, و الواجهة Interface هو شبيه بالكلاس المجرد أي أنه يحتوي على دوال مجردة من نوع abstract و لا يمكن أن تقبل بناء كود بداخلها و يطلق على Interface في بعض المراجع مصطلح نمط أي أن الكلاس الذي سيعرّف من Interface مُلزَم بتنفيذ كافة الدوال الموجودة داخل Interface و هو شبيه بالكلاس abstract سوى أن الفرق بينه و بين Interface أنه يقبل الوراثة المتعددة.
الفرق بين Interface و بين abstract
1 - يمكن أن يحتوي الكلاس من نوع abstract على دوال مجردة و غير مجردة بينما الكلاس من نوع Interface يحتوي على دوال مجردة فقط يعني مسبوقة بكلمة abstract.
2 - الكلاس من نوع abstract لا يدعم الوراثة المتعددة كما هو الحال في بقية الكلاسات بينما Interface يدعم الوراثة المتعددة.
3 - الكلاس من نوع abstract يمكن أن يحتوي على متغيرات ثابتة و متغيرة بينما Interface يحتوي على متغيرات ثابتة فقط.
4 - الكلمة المحجوزة abstract تُستخدَم للكلاس و الدوال بينما كلمة Interface تستخدم للواجهة فقط.
ماذا يحتوي الـ Interface في الجافا؟
يحتوي على دوال مجردة فقط, و يجب على الكلاس الوارث أن يقوم بتنفيذ كافة الدوال الموجودة في Interface.
و هذا يجعلنا نفهم أن Interface يتحكم بمسار البرنامج لذلك يُطلق عليه في بعض المراجع مصطلح نمط او المسار المرسوم بحيث أنه يقيّد البرنامج بمسار مُعيَّن و هو أن كل الكلاسات الوارثة من Interface تقوم بتنفيذ كافة الدوال في Interface و المتغيرات الثابتة.
طريقة وراثة الكلاس من Interface
تعلمنا في الدروس السابقة أن الكلاس عندما يُريد أن يَرِث من كلاس آخر يُستخدَم الكلمة extends و لكن عندما يريد كلاس أن يَرِث من Interface فإننا نَستخدِم الكلمة المحجوزة implements.
الشكل العام لوراثة كلاس من Interface
class A implements P
يعني لدينا كلاس إسمه A و ورث Interface بواسطة الكلمة implements.
مثال
package c1;
interface A1
{
void print();
}
public class C1 implements A1{
public void print()
{
System.out.println("welcome course java")
}
public static void main(String []args){
C1 c=new C1();
c.print();
}
}
شرح المثال السابق
أنشأنا Interface بإسم A1 و به دالة إسمها print و أورثنا كلاس إسمه C1 من الـ Interface الذي إسمه A1 و إستدعينا الدالة الموجودة بداخله ووضعنا لها كود طباعة جملة welcome course java و دخلنا للبرنامج الرئيسي و أنشأنا كائن من الكلاس C1 و إستدعينا الدالة print عن طريق الكائن c.
ليست هناك تعليقات:
إرسال تعليق