1. الواجهة: "فئة خاصة" التي تتجذ دروس بشكل أكثر شمولية ، ويمكن أن تحتوي فقط على طرق مجردة في الواجهة. لا تهتم الواجهة ببيانات الحالة الداخلية للفئة ، وتحدد المواصفات التي تتوافق مع مجموعة من الفئات. (ينص فقط على أنه يجب توفير طرق معينة في هذه المجموعة من الفئات ، ويمكن أن يفي بتوفير هذه الأساليب المتطلبات الفعلية).
في لغة برمجة Java ، هو نوع مجردة ، وعادة ما يتم الإعلان عن مجموعة من الأساليب المجردة والواجهات كواجهة. يرث الفئة الطرق المجردة للواجهة عن طريق وراثة الواجهة.
الواجهات ليست فصولًا ، والطريقة التي يكتبون بها واجهات تشبه إلى حد كبير الفصول الدراسية ، لكنها تنتمي إلى مفاهيم مختلفة. يصف الفصل خصائص وطرق كائن ما. تحتوي الواجهة على الطرق التي سيتم تنفيذها بواسطة الفصل.
ما لم يكن الفصل الذي ينفذ واجهة فئة مجردة ، يحدد الفصل جميع الطرق في الواجهة.
لا يمكن إنشاء إنشاء الواجهة ، ولكن يمكن تنفيذها. يجب أن تنفذ الفئة التي تنفذ واجهة جميع الطرق الموضحة في الواجهة ، وإلا يجب إعلانها كفئة مجردة. بالإضافة إلى ذلك ، في Java ، يمكن استخدام أنواع الواجهة لإعلان متغير ، يمكن أن تكون مؤشرًا فارغًا ، أو مرتبطًا بكائن يتم تنفيذه مع هذه الواجهة.
التعريف: [modifier] واجهة واجهة اسم الواجهة الواجهة 1 ، واجهة التعيين 2 ، ... // لا تمديد واجهة الأصل 1 ... هو تحديد الواجهة
{
// صفر إلى تعريفات ثابتة متعددة ...
// صفر إلى تعريف طريقة مثيل مجردة متعددة ...
}
[وصف بناء الجملة]: 1. يمكن أن يكون المعدل علنيًا أو حذفًا. إذا تم حذف حرف التحكم في الوصول العام ، فسيكون ذلك إذن وصول الحزمة.
2. يتم تعديل جميع الأعضاء في الواجهة بشكل عام لأن الواجهة عامة ويمكن الوصول إليها من قبل جميع الفئات. التعديل الافتراضي للسمة في الواجهة هو: PublicStaticFinal. بغض النظر عما إذا كانت السمة مكتوبة أم لا ، فإن التعديل الافتراضي لنفس الطريقة هو: Publicabstract ، الفئة الداخلية: PublicStatic. سيتم إضافتها بشكل افتراضي.
3. لا يمكن أن يكون هناك مُنشئون في الأعضاء ، ولا يمكن أن تكون هناك كتل تهيئة.
4. يمكن لملف مصدر Java تحديد واجهة واحدة فقط ، لأنه تم تعديله بشكل علني ، ويجب أن يكون الاسم المخزن هو نفسه اسم الفئة المعدلة للجمهور ، ويمكن اعتبار الواجهة فئة خاصة.
2. وراثة الواجهة: يمكن أن تحتوي الواجهة على واجهات الأم المباشرة المتعددة ، ويمكن للواجهة أن ترث فقط واجهات ، ولكن ليس الفئات.
[ملاحظة]: أ. ترث الواجهة الفرعية الواجهة الأصل وستحصل على جميع الأساليب المجردة والسمات المستمرة والفئات الداخلية والتعاريف الأخرى المحددة في الواجهة الأصل.
3. استخدام الواجهة: بناء جملة: [Modifier] اسم الفئة يمتد فئة الأصل ، واجهة 1 ، الواجهة 2 ... {class body}.
【احتياطات】
أ. الوصف: يمكن للفئة أن يرث فئة أولياء الأمور وواجهات متعددة في نفس الوقت ، ولكن يجب أن يتم وضعها بعد الأدوات.
ب. لا يمكن للواجهة إنشاء مثيل ، ولكن يمكن أن تعلن المتغيرات ، ولكن يجب أن تشير إلى كائن فئة التنفيذ الخاصة به.
ج. الغرض الرئيسي هو تنفيذها من قبل الفصل.
د. طريقة التنفيذ: استخدم الكلمة الرئيسية للأدوات
ه. بعد أن يرث الفئة واجهة ، يجب أن تنفذ جميع الأساليب المجردة المحددة في هذه الواجهات (أي ، أعد كتابة طرق الفصل هذه في الفئة الفرعية). خلاف ذلك ، إذا لم يتم تنفيذها بالكامل ، فلا يمكن تعريف هذه الفئة إلا بأنها فئة مجردة.
و. عند تجاوز طريقة الواجهة ، يمكن أن يكون المعدل أكبر أو متساوٍ فقط من الفئة الأصل ، لذلك يجب أن يكون أيضًا معدلًا عامًا.
ز. يمكن تعيين جميع متغيرات نوع الواجهة مباشرة إلى متغيرات نوع الكائن.
انشر رمز العينة (مقتبس من Java المجنونة لـ Li Gang):
// تحديد إخراج واجهة إخراج الواجهة {// لا يمكن تعريف السمة إلا على أنها ثوابت int max_cache_line = 50 ؛ // تحديد مساحة التخزين بشكل رئيسي // يمكن أن تكون طريقة التجريد المحددة في الواجهة فقط باطلة عامة () ؛ void getData (سلسلة msg) ؛ } // تحديد منتج واجهة واجهة واجهة {int getProducetime (int a) ؛ } // دع فئة الطابعة تنفذ واجهة محددة طابعة الفئة العامة التي تنفذ الإخراج ، المنتج {private string [] printData = new String [max_cache_line] ؛ private int datanum = 0 ؛ public void out () // أعد كتابة طريقة إخراج الواجهة الأصل {بينما (datanum> 0) {system.out.println ("print print"+printData [0]) ؛ System.arrayCopy (printData ، 1 ، printData ، 0 ،-datanum) ؛ }} public void getData (String msg) // أعد كتابة طريقة إخراج الواجهة الأصل {if (datanum> = max_cache_line) {system.out.println ("full") ؛ } آخر {printData [datanum ++] = msg ؛ }} public int getProducetime (int a) // أعد كتابة طريقة منتج الواجهة الأصل {return a = a ؛ } باطل ثابت عام (سلسلة [] args) {// يمكن أن تعلن الواجهة الأصل المتغيرات ، ولكن لا يمكنها إنشاء مثيلات ، تعدد الأشكال: إعلان الإخراج ، ولكن المثيل الذي تم إنشاؤه هو إخراج الطابعة O = New Printer () ؛ O.GetData ("xiuxiu") ؛ O.out () ؛ // استدعاء طريقة الإخراج مباشرة // يمكن أن تعلن الواجهة الأصل المتغيرات ، ولكن لا يمكنها إنشاء مثيلات ، تعدد الأشكال: إعلان الإخراج ، ولكن المثيل الذي تم إنشاؤه هو منتج الطابعة P = New Printer () ؛ System.out.println (P.GetProducetime (82)) ؛ // يمكن تعيين جميع متغيرات مرجع نوع الواجهة مباشرة إلى كائن متغير نوع الكائن OBJ = P ؛ كائن OBJ1 = o ؛ }}4. أوجه التشابه والاختلاف بين الطبقات التجريدية والواجهات:
نفس:
1. كلها طرق مجردة.
2. لا يمكن إنشاء مثيل.
3. يجب أن تنفذ الفئات الفرعية جميع الأساليب المجردة داخلها بعد وراثيها. إذا لم يتم تنفيذها بالكامل ، فلا يمكن تعريف الفصل إلا بأنه فئة مجردة.
مختلف:
1. لا يمكن أن تكون هناك سوى طرق مجردة في الواجهة ، والطرق العادية في الفئة التجريدية.
2. السمات في فئة الواجهة لها المعدل العام بشكل افتراضي ، ولكن يمكن أن تكون السمات في الفئة التجريدية عادية.
3. لا تحتوي الواجهة على كتلة تهيئة ، ولكنها موجودة في الفئة المجردة.
4. يمكن أن تحتوي الواجهة على واجهات الوالدين المتعددة ، ولكن يمكن أن يكون للفئة المجردة فئة الوالدين واحدة فقط.
لخص
ما سبق هو كل شيء عن الأمثلة على الواجهة والاستخدام في جافا. آمل أن يكون ذلك مفيدًا للجميع. يمكن للأصدقاء المهتمين الاستمرار في الرجوع إلى الموضوعات الأخرى ذات الصلة على هذا الموقع. إذا كانت هناك أي أوجه قصور ، فيرجى ترك رسالة لإشارةها.