سؤال

لدي الواجهة التالية في جافا

public interface IFoo
{
    public abstract void foo();
    public void bar();
}

ما هو الفرق بين Foo () والبار ()؟ متى يجب علي استخدام مجردة؟

يبدو أن كلاهما ينجز ما أريده إلا إذا فقدت شيئا خفيا؟

تحديث نسخة مكررة لماذا يعلن المرء طريقة واجهة جافا مجردة؟

هل كانت مفيدة؟

المحلول

لا يوجد أي فرق وظيفي. لا يتم توفير أي تطبيق في واجهة Java، لذا فإن جميع إعلانات الأسلوب مجردة ضمنيا.

انظر [1]: http://java.sun.com/docs/books/tutorial/java/iandi/abstract.html.

نموذج الاقتباس المباشر أعلاه:

ملاحظة: جميع الأساليب الموجودة في واجهة (انظر قسم الواجهات) مجردة ضمنيا، لذلك لا يتم استخدام معدل التجريدي مع أساليب الواجهة (قد يكون - ليس من الضروري فقط).

نصائح أخرى

طرق الواجهة كلاهما public و abstract بشكل افتراضي. لا يوجد فرق بين foo() و bar() ويمكنك إزالة كل شيء بأمان public و abstract الكلمات الدالة.

أنت لا تفتقد أي شيء. من مواصفات لغة Java.:

يتم إجراء إعلان كل طريقة في جسم الواجهة ضمنا، لذلك يتم تمثيل جسمه دائما من قبل فاصلة منقوطة، وليس كتلة.

كل إعلان طريقة في جسم الواجهة عامة ضمنيا.

بمعنى آخر، يمكنك حذف public وكذلك abstract في أساليب الواجهة.

إنه أمر زائدة عن الحاجة (لا يوجد فرق بين التصريحين) وإثباتها صراحة في القسم 9.4. من مواصفات لغة Java:

بالنسبة للتوافق مع الإصدارات القديمة من منصة Java، يسمح بذلك، ولكنها تثبط، كمسألة نمط، لارتكاب تعديل المعدل التجريدي للأساليب المعلنة في واجهات.

و public وبالمثل غير ضروري وإثبات:

يسمح به، ولكن تثبط بشدة كمسألة أسلوب، لارتكاب معدل المواليد العمومي لأساليب الواجهة.

أنا لا أعرف لماذا public يكون بقوة محبطة ولكن abstract هو مجرد تثبيط ...

كلاهما ينجز نفسه، لأن جميع الأساليب في واجهة مجردة.

abstract في هذا السيناريو غير ضروري (كما هو الحال في واجهات في واجهات public).

انت ترغب في حين أن استخدم هذا على طريقة في فئة مجردة من أجل فرضها الغالق من قبل فرعية.

لا يوجد اختلاف بين التصريحات. من الناحية النظرية، جميع الأساليب في واجهة مجردة.

لا فرق. جميع الأساليب في واجهة Java هي دائما مجردة.

انظر الملاحظة الأولى في هذا الرابط:http://java.sun.com/docs/books/tutorial/java/iandi/abstract.html.

كل من Foo () وبار () مجردة كما يتم الإعلان عنها داخل واجهة. الكلمة المجردة التي استخدمتها هنا ليست ذات أهمية - أنت أفضل إزالته.

واجهات في Java متساوية "بطريقة أو بأخرى" لفصول مجردة بالكامل، لذا فإن إضافة كلمة "مجردة" إلى إعلان طريقة في واجهة لا علاقة لها بالطريقة!

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top