في جافا، متى يجب أن أستخدم طريقة مجردة في واجهة؟
-
18-09-2019 - |
سؤال
لدي الواجهة التالية في جافا
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 متساوية "بطريقة أو بأخرى" لفصول مجردة بالكامل، لذا فإن إضافة كلمة "مجردة" إلى إعلان طريقة في واجهة لا علاقة لها بالطريقة!