الفرق بين الواجهة والفصل التجريدي في Java & C #

مؤلف: Laura McKinney
تاريخ الخلق: 1 أبريل 2021
تاريخ التحديث: 5 قد 2024
Anonim
الفرق بين الواجهة والفصل التجريدي في Java & C # - تقنية
الفرق بين الواجهة والفصل التجريدي في Java & C # - تقنية

المحتوى


كلا من فئة الخلاصة (Interface and Abstract) كلاهما يساهمان في "النوع غير الكامل" في OOP في بعض الأحيان نحتاج إلى فئة فائقة لتحديد "ما يجب القيام به" ، ولكن ، "كيفية القيام به" ، إنها كيفية تنفيذ جزء من الفصل المشتق وفقًا لحاجته ، "جهة تعامل"توفير حل لهذا. نحتاج في بعض الأحيان إلى فئة من الطبقة العليا تحدد بعض البنية المعممة التي يمكن تنفيذها من خلال الفئات المشتقة وبعض الهياكل المحددة التي يمكن استخدامها من قبل الفئات المشتقة ، "فئة مجردة"يوفر حلا لهذا. الفرق الأساسي بين الواجهة والفئة المجردة هو أن الواجهة غير كاملة تمامًا ، والفئة التجريدية غير مكتملة جزئيًا.

  1. رسم بياني للمقارنة
  2. فريف
  3. الاختلافات الرئيسية
  4. استنتاج

رسم بياني للمقارنة

أساس للمقارنةجهة تعاملفئة مجردة
الأساسيةعندما يكون لديك فقط المعرفة بالمتطلبات وليس عن تنفيذها ، فإنك تستخدم "واجهة".عندما تعرف جزئياً عن التطبيقات التي تستخدمها "فصول الملخص".
أساليبواجهة يحتوي فقط على أساليب مجردة.فئة الملخص تحتوي على طرق مجردة وكذلك طرق ملموسة.
معدل الوصول للطرقتكون أساليب الواجهة دائمًا "عامة" و "مجردة" ، حتى لو لم نعلن ذلك. وبالتالي ، يمكن القول 100 ٪ ، والطبقة المجردة نقية.ليس إلزاميا أن تكون الطريقة في الفصل التجريدي عامة ومجردة. يمكن أن يكون لها طرق ملموسة أيضا.
معدّل مقيد للطرقلا يمكن التصريح عن طريقة واجهة مع المعدلات التالية:
عام: خاص ومحمي
الملخص: نهائي ، ثابت ، متزامن ، أصلي ، صرامة.
لا توجد قيود على المعدلات لمتغير الفئة المجردة.
معدل الوصول للمتغيراتيعد Acess Modifier المسموح به لمتغيرات الواجهة عامًا وثابتًا ونهائيًا سواء كنا نعلن أم لا.لا يجب أن تكون المتغيرات في الفصل التجريدي عامة وثابتة ونهائية.
المعدلات المحظورة للمتغيراتلا يمكن إعلان متغيرات الواجهة على أنها خاصة ومحمية وعابرة ومتقلبة.لا يوجد أي قيود على المعدلات لمتغيرات الفئة المجردة.
تهيئة المتغيراتيجب تهيئة متغيرات الواجهة في وقت إعلانها.ليس من الضروري تهيئة متغيرات الفئة المجردة في وقت إعلانها.
مثيل وكتل ثابتةداخل الواجهة ، لا يمكنك التصريح عن مثيل أو كتلة ثابتة.فئة الملخص يسمح بمثيل أو كتلة ثابتة بداخله.
الصانعينلا يمكنك إعلان المنشئ داخل الواجهة.يمكنك أن تعلن منشئ داخل فئة مجردة.


تعريف الواجهة

جافا لا تسمح بالإرث المتعدد. وهذا يعني أن فئة واحدة لا يمكن أن ترث أكثر من فئة في وقت واحد. يمكن تفسير السبب وراء ذلك بمثال. لنفترض أن لدينا فئتين أصليتين ، A و B وفئة مشتقة C. ترث الفئة C المشتقة كلا الفئتين A و B.الآن ، لدى كلاهما الفئة A و B لهما مجموعة () ، ثم سيكون السؤال من الفئة C هو الأسلوب الذي يجب أن يرثته الفئة (). الحل لهذه المشكلة هو "واجهة".

الواجهة عبارة عن فئة مجردة خالصة. الكلمة الأساسية المستخدمة لإنشاء واجهة هي "واجهة". لأن كل طريقة داخل واجهة مجردة تماما. تحدد الواجهة فقط ما يجب على الفصل الدراسي القيام به ، لكنها لا تحدد كيف يفعل ذلك. لمجرد أن كل الطريقة المعلنة داخل الواجهة مجردة ، لا يتم إنشاء مثيل للواجهة. الشكل العام لـ "واجهة" في جافا هو:

access_specifier واجهه المستخدم interface_name {return-type method-name1 (قائمة المعلمات) ؛ نوع الإرجاع method-name2 (قائمة المعلمات) ؛ اكتب final-varname1 = قيمة ؛ اكتب final-varname2 = قيمة ؛ // ... return-type method-nameN (قائمة المعلمات) ؛ اكتب final-varnameN = value؛ }

تم إعلان محدد الوصول إلى الجمهور لأن الفئات تحتاج إلى تطبيق الواجهة.


ليس لدينا مفهوم "الواجهة" في C ++. ولكن ، Java و C # يحددان الواجهة بشكل جيد للغاية.

واجهة في جافا:

  • متغيرات الواجهة هي بشكل افتراضي دائمًا عامة وثابتة ونهائية.
  • يجب تهيئة المتغيرات في وقت إعلانها.
  • لا يمكن أبدًا إعلان المتغيرات على أنها خاصة ومحمية وعابرة ومتقلبة.
  • تكون أساليب الواجهة عامة ومجردة دائمًا ، في حين أنه لا يمكن أبدًا إعلانها على أنها خاصة ، محمية ، نهائية ، ساكنة ، متزامنة ، أصلية ودقيقة.
  • لا يمكنك التصريح عن أي مُنشئ داخل الواجهة لأن الغرض الرئيسي من المُنشئ هو تهيئة متغيرات الفئة ، ولكن في متغيرات الواجهة تتم تهيئة وقت إعلانها.
  • يمكن أن ترث الواجهة واجهات أخرى ، ولكن يجب على الفئة التي تنفذ هذه الواجهة تنفيذ أساليب جميع الواجهات الموروثة.
  • يمكن للفئة أن ترث أكثر من واجهة واحدة في كل مرة ، ويجب أن تنفذ جميع أساليب جميع الواجهات الموروثة.

الشكل العام لتطبيق واجهة في Java:

class class_name ينفذ Interface_name {// class-body}

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

واجهة في C #:

تشبه الواجهة في C # تقريباً الواجهة في Java باستثناء:

  • واجهة في C # لا تعلن المتغيرات.
  • يتم بادئة اسم الواجهة بحرف كبير ورثته بنقطتين (:) علامة.

الشكل العام لتطبيق واجهة في C #:

class class_name: interface_name {// class-body}

تعريف فئة الملخص

تسمى الفئة التي تحتوي على طريقة تجريدية واحدة أو أكثر باسم فئة مجردة ، ويتم الإعلان عن فئة مجردة باستخدام الكلمة الأساسية "مجردة" ، مسبوقة بكلمة أساسية "فئة" في بداية إعلان الفصل. نظرًا لأن الفئة المجردة تحتوي على الطريقة المجردة ، فإنها تشكل نوعًا غير مكتمل. وبالتالي ، لا يمكنك إنشاء كائنات من فئة مجردة. عندما يرث الفصل فئة تجريدية ، يجب أن يقوم بتنفيذ جميع الأساليب المجردة للفصل التجريدي إذا لم يكن كذلك ، يجب أيضًا إعلانها على أنها تجريدية. تُورث السمة التجريدية حتى يتم التنفيذ الكامل لأساليب الملخص.

يمكن أن تحتوي الفئة المجردة أيضًا على طرق ملموسة يمكن استخدامها بواسطة الفئة المشتقة كما هي. ولكن ، لا يمكنك التصريح عن مُنشئ مجردة أو طريقة ثابتة مجردة داخل فئة مجردة. الشكل العام للفصل التجريدي في جافا على النحو التالي:

فئة مجردة class_name {abstract method_name1 () ؛ مجردة method_name2 () ؛ : return_type method_name3 (parameter_list) {// concrete method} return_type method_name4 (parameter_list) {// concrete method}}؛

مفهوم الفئة المجردة مشابه في كل من Java و C #. فئة تجريدية مختلفة قليلاً في C ++.

في C ++ ، إذا كان للفصل دالة واحدة على الأقل ، يصبح الفصل فئة مجردة. بدلاً من الكلمة الأساسية "abstract" ، يتم استخدام الكلمة الأساسية "virtual" لإعلان طريقة مجردة.

  1. عندما يكون لديك معرفة بـ "ما هو مطلوب" ولكن ليس "كيف سيتم تنفيذه" ، يجب استخدام الواجهة. من ناحية أخرى ، إذا كنت تعرف ما هو مطلوب وتعرف جزئيًا كيف سيتم تنفيذه ، فاستخدم فصلًا تجريديًا.
  2. تحتوي الواجهة على كل طرقها التجريدية ، لكن للفصل التجريدي بعض الطرق المجردة وبعض الطرق الملموسة.
  3. الأساليب الموجودة داخل واجهة عامة ومجردة ، وبالتالي تسمى أيضًا فئة مجردة خالصة. من ناحية أخرى ، لا تقتصر الأساليب الموجودة داخل الملخص على أن تكون عامة ومجردة فقط.
  4. لا يمكن أن تكون طريقة الواجهة خاصة أو محمية أو نهائية أو ساكنة أو متزامنة أو أصلية أو صارمة. من ناحية أخرى ، لا توجد قيود على أساليب الفصل التجريدي.
  5. المتغيرات في الواجهة عامة ونهائية سواء أعلنا ذلك أم لا ، في حين أنه لا يوجد قيد من هذا القبيل على متغيرات فئة مجردة لتكون عامة ونهائية فقط.
  6. لا يمكن أبدًا أن تكون المتغيرات في واجهة خاصة عابرة أو متقلبة محمية ، بينما لا يوجد أي قيود على المتغيرات في فئة مجردة.
  7. يجب تهيئة متغير واجهة أثناء الإعلان. من ناحية أخرى ، يمكن تهيئة المتغيرات في فئة مجردة في أي وقت.
  8. داخل واجهة ، لا يمكن التصريح عن مثيل أو كتلة ثابتة ، ولكن يمكنك إعلان مثيل أو كتلة ثابتة داخل فئة مجردة.
  9. لا يمكنك تعريف المنشئ داخل واجهة ، في حين يمكنك تعريف المنشئ داخل فئة مجردة.

خاتمة:

عندما تحتاج إلى إنشاء فئة أساسية تحتوي على شكل معمم من الأساليب التي يمكن تنفيذها بواسطة الفئات المشتقة وفقًا لحاجتها ، فإن مفهوم الواجهة وفئة الملخص يساعد في القيام بذلك.