عند تنفيذ الواجهة، نستخدم بناء جملة الواجهة لفصل الواجهة عن تعريف الفئة وتشكيل موضوع. توفر الواجهة مواصفات الواجهة للفئات.
في الميراث، نقدم آلية الميراث من أجل تحسين إمكانية إعادة استخدام البرنامج. كان الميراث في ذلك الوقت يعتمد على الطبقات. يمكن أيضًا وراثة واجهة الواجهة لتوسيع الواجهة الأصلية.
وراثة الواجهة
وراثة الواجهة (الميراث) تشبه إلى حد كبير وراثة الفئة، وهي إضافة نماذج أولية جديدة لطريقة الواجهة بناءً على الواجهة الموروثة. على سبيل المثال، نستخدم Cup كواجهة أصلية:
انسخ رمز الكود كما يلي:
واجهة كأس {
void addWater(int w);
مشروب باطلة(int w);
}
على أساس وراثة الكأس، قمنا بتعريف واجهة جديدة للأكواب ذات المقاييس، MetricCup
الواجهة هي كما يلي:
انسخ رمز الكود كما يلي:
واجهة MetricCup تمتد الكأس
{
int WaterContent();
}
لقد أضفنا نموذجًا أوليًا جديدًا للطريقة WaterContent()، والذي يُرجع عددًا صحيحًا (كمية الماء).
وراثة متعددة للواجهة
في وراثة فئة Java، يمكن أن تحتوي الفئة المشتقة على فئة أساسية واحدة فقط. بمعنى آخر، لا يمكن أن يرث الفصل أكثر من فصل واحد في نفس الوقت. في Java، يمكن للواجهة أن ترث أكثر من واجهة في نفس الوقت، وهو ما يسمى الوراثة المتعددة.
على سبيل المثال، لدينا واجهة المشغل التالية:
انسخ رمز الكود كما يلي:
مشغل الواجهة
{
اللعب باطل () ؛
}
نضيف واجهة MusicCup جديدة. يحتوي على واجهة Cup وواجهة Player، ويضيف نموذجًا أوليًا لطريقة العرض ().
انسخ رمز الكود كما يلي:
واجهة MusicCup تمتد كأس، لاعب
{
عرض باطل () ؛
}
(كيفية استخدام الواجهة، راجع واجهة التنفيذ)
فئة مجردة
في الحياة، لدينا بعض المفاهيم المجردة للغاية. غالبًا ما تكون هذه المفاهيم المجردة عبارة عن مجموعة من العديد من الفئات، مثل:
1. الحبوب (يمكن أن تكون الذرة والقمح والأرز)
2. الرسومات (يمكن أن تكون مثلثات، دوائر، مربعات)
ولمثال آخر، قدمنا مثالا من قبل:
1. البشر (يمكن أن يكونوا رجالاً أو نساء)
عند تنظيم مثل هذه العلاقات يمكننا استخدام الوراثة مثل:
حسب الفطرة السليمة لدينا:
1. مصطلح "كائن فئة الغذاء" مجرد. يجب أن ينتمي مثل هذا الكائن إلى إحدى الفئات الفرعية للذرة والأرز والقمح.
2. فئة الطعام لها طريقة Eat() (يمكن تناول الطعام). ومع ذلك، فإن مثل هذا الإجراء مجردة. تختلف الطرق المحددة لتناول الطعام. على سبيل المثال، يجب تقشير الذرة وأكلها، ويجب طحن القمح وتحويله إلى دقيق. نحتاج إلى تجاوز طريقة Eat() لفئة الطعام في كل فصل.
مجردة وملموسة
توفر Java بناء جملة الفئة المجردة لتوضيح تجريد الفئات وطرقها. على سبيل المثال:
انسخ رمز الكود كما يلي:
فئة مجردة الغذاء {
أكل الفراغ الملخص العام () ؛
الفراغ العام HappyFood();
{
System.out.println("جيد! أكلني!");
}
}
يمكن تعريف الأساليب الموجودة في الفصل بأنها مجردة، مثل Eat() أعلاه. في هذا الوقت، لا نحتاج إلى تحديد الطريقة على وجه التحديد، نحتاج فقط إلى تقديم النموذج الأولي للطريقة. وهذا مشابه للواجهات. عندما نرث هذه الفئة في فئة الذرة، على سبيل المثال، نحتاج إلى تقديم تعريف محدد لطريقة Eat().
طريقة أخرى في فئة HappyFood () ليست كذلك
عندما تظهر طريقة مجردة في الفصل الدراسي، يجب إضافة الكلمة الأساسية المجردة إلى إعلان هذه الفئة، وإلا ستبلغ Java عن خطأ. لا يمكن استخدام فئة مجردة لإنشاء كائنات.
وراثة الطبقات المجردة
يمكننا أن نرث فئة مجردة تمامًا مثل الفصل. يجب علينا استخدام تعريفات كاملة للطرق لتغطية الطرق المجردة في الفئة المجردة، وإلا فإن الفئة المشتقة تظل فئة مجردة.
يمكن أن تحتوي الفئات المجردة على أعضاء بيانات في تعريفها. وراثة أعضاء البيانات هو نفس وراثة الطبقة العادية.
تلخيص
وراثة الواجهة، وراثة متعددة
طريقة مجردة، فئة مجردة