شرح الـ Interface في جافا
شرح الـ Interface في جافا
ما هو الـ interface؟
الـ interface يشبه كثيرا الـ abstract class في أنه يحدد خصائص مشتركة للكائنات (objects) في كلاسات لها علاقةوراثية ببعضها (Inheratance) بالإضافة إلى أنه يحدد يحدد خصائص مشتركة للكائنات (objects) في كلاسات ليس بالضرورة أن يكون لها علاقة ببعضها وهو ما يميز الـ Interface.
لم تضح الصورة لك بعد؟ لا بأس سأشرح لك بمثال
لو كان عندي Abstract class اسميته Fruits وهو (parent class (super class لمجموعة من الفواكه هي الموز والبرتقال (child classes) وأنشأت Abstract class آخر أسميته Animals وهو (parent class (super class لمجموعة من الحيوانات الدجاجة والأسد (child classes)، ثم أنشأت Interface أسميته Eddible (قابل للأكل).
لاحظ أن الموز والبرتقال بإمكاننا أن نقول أنها فواكه لأن العلاقة هنا وراثية (Inheratance) فأي موزة هي فاكهة وأي برتقال هو فاكهة، وأيضا بإمكاننا أن نقول أن الموز والبرتقال قابلان للأكل.
والشئ نفسه ينطبق على الدجاجة والأسد في كونهما حيوانات لأن العلاقة وراثية فأي دجاجة هي حيوان وأي أسد هو حيوان،وأيضا بإمكاننا أن نقول أن الدجاجة قابلة للأكل لكن لا يمكننا القول بأن الأسد قابل للأكل فهنا الـEdible interface سيصلح فقط للدجاجة دون الأسد.
إن ما أردت توضيحه هو أن الفواكه والحيوانات ليس لها رابطة واضحة أو خصائص مشتركة لكن الـ Interface أوجد خاصية مشتركة بينها وهي قابلية الأكل وهذا ما يميز الـInterface عن الـabstract class.
لماذا نستخدم الـ interface؟
ببساطة لأن Java لايدعم Multiple Inheratance (الوراثة المتعددة)، وفي أغلب الأحيان نحتاج لأكثر من كلاس لنأخذ منه خصائص مشتركة فالحل هو الـInterface.
*ملاحظة: بإمكان الكلاس أن يكون له علاقة وراثية واحدة فقط أي أن يكون له Super classs واحد فقط، بينما بإمكانه أن يكون متعدد الـInterfaces وتسمى هذه العلاقة Interface Inheratance.
كيف ننشئ الـ interface؟
الصيغة العامة للـInterface هي:
مثال:
كيف نستخدم الـ interface؟
ليستخدم الكلاس الـInterface المطلوب نستخدم كلمة implements بعد اسم الكلاس وقبل اسم الـ Ineterface كما هو موضح في المثال.
وبطبيعة الحال بما أن في الـInterface يوجد Abstarct Method فيجب علينا أن ننفذ Implementation للميثود في الكلاس الذي استدعى الـInterface وإلا ستبقى الميثود abstract وسيتحول الكلاس إلى abstract class.
مثال:
main class:
Output:
*المصادر:
كتاب Introduction to Java programming, Tenth Edition, Y. Daniel Liang.
التعليقات (2)
مقالة جيدة, بسيطة ووافية ..
تعبت علشان أفهم بالبساطة دي الموضوع دا.
شكراً،،،
شكرا على التفسير
لايوجد لديك حساب في عالم البرمجة؟
تحب تنضم لعالم البرمجة؟ وتنشئ عالمك الخاص، تنشر المقالات، الدورات، تشارك المبرمجين وتساعد الآخرين، اشترك الآن بخطوات يسيرة !