الانتقال إلى المحتوى الرئيسي

طريقة التحميل الزائد وطريقة إعادة تعريف: ما يميزها?

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

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

مثال:

حاسبة الطبقة العامة {

مجموع كثافة العمليات العامة (كثافة العمليات أ ، كثافة العمليات ب) {

العودة أ + ب;

}

مجموع مزدوج عام (مزدوج أ ، مزدوج ب) {

}

}

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

مثال:

حيوان الطبقة العامة {

صوت الفراغ العام () {

النظام.خارج.برينتلن ("الحيوان يصدر صوتا");

}

}

كلب الطبقة العامة يمتد الحيوان {

صوت الفراغ العام () {

النظام.خارج.برينتلن ("الكلب ينبح");

}

}

وبالتالي ، تسمح لك طرق التحميل الزائد بإنشاء طرق مختلفة لاستخدام طريقة في فصل واحد ، وتسمح لك طرق التجاوز بتغيير سلوك الطريقة عند وراثتها في فصول فرعية.

  1. ما هي طريقة التحميل الزائد?
  2. كيف طريقة إعادة العمل في جافا?
  3. ما هي المعلمات التي يمكن تحميلها بشكل زائد في الطريقة?
  4. ما هي قيمة نوع الإرجاع عند طرق التحميل الزائد?
  5. ما هي طريقة إعادة تعريف?
  6. كيف طريقة إعادة تعريف العمل في جاوة?
  7. ما هو "تعدد الأشكال" وكيف يرتبط بالحمل الزائد وطرق التجاوز?
  8. الطريقة التي سيتم استدعاؤها إذا كانت هناك طرق مثقلة ومتجاوزة في نفس الوقت?
  9. سؤال وجواب
  10. ما هو الفرق بين طرق التحميل الزائد وطرق تجاوز?
  11. ما هو الدور الذي يلعبه نوع الإرجاع عند طرق التحميل الزائد?
  12. هل من الممكن أن تفرط في طريقة عن طريق تغيير فقط نوع عودتها?
  13. ماذا يحدث إذا تم الإعلان عن طريقة افتراضية في الفئة الأساسية, ولكن يتم إعادة تعريفه على أنه غير افتراضي في الفئة اللاحقة?
  14. هل من الممكن أن الزائد أساليب ثابتة?
  15. هل من الممكن أن الطرق الزائد مع أسماء مختلفة?

ما هي طريقة التحميل الزائد?

طريقة التحميل الزائد هو فرصة لتحديد عدة طرق في فئة بنفس الاسم ، ولكن مع معلمات مختلفة. اعتمادا على الحجج التي تم تمريرها ، سيتم استدعاء الطريقة المقابلة.

ميزة طريقة التحميل الزائد هي استخدام توقيعات مختلفة-مجموعات من المعلمات التي تسمح لك بتمييز الطرق. توقيع الطريقة هو مزيج من عدد المعلمات وأنواعها وترتيبها.

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

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

مثال على طريقة التحميل الزائد: الطريقة

التوقيعالوصف
من باطلة العامة برينتمسيج()طريقة بدون وسيطات تخرج رسالة إلى
وحدة التحكم العامة باطلة برينتمسيج (رسالة سلسلة) أسلوب مع وسيطة سلسلة واحدة إخراج الرسالة المرسلة إلى وحدة التحكم
العامة باطلة برينتمسيج (رسالة سلسلة ، عدد إنت)طريقة مع اثنين من الحجج ، سلسلة ورقم ، أن إخراج الرسالة المرسلة العدد المحدد من المرات

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

كيف طريقة إعادة العمل في جافا?

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

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

لنلق نظرة على مثال على طرق إعادة التحميل:

حاسبة الطبقة العامة {

إضافة كثافة العمليات العامة (كثافة العمليات أ ، كثافة العمليات ب) {

العودة أ + ب;

}

إضافة مزدوجة عامة (مزدوجة أ ، مزدوجة ب) {

العودة أ + ب;

}

إضافة كثافة العمليات العامة (كثافة العمليات أ ، كثافة العمليات ب ، كثافة العمليات ج) {

العودة أ + ب + ج;

}

}

في هذا المثال ، تحتوي فئة الآلة الحاسبة على ثلاث طرق إضافة بمجموعات مختلفة من المعلمات: إضافة(كثافة العمليات أ ، كثافة العمليات ب) ، إضافة(ضعف أ ، ضعف ب) وإضافة(كثافة العمليات أ ، كثافة العمليات ب ، كثافة العمليات ج).

عند استدعاء هذه الطرق ، يقوم المترجم بتحديد الطريقة الأنسب بناء على الوسائط التي تم تمريرها. على سبيل المثال:

آلة حاسبة آلة حاسبة = آلة حاسبة جديدة();

كثافة العمليات نتيجة 1 = آلة حاسبة.إضافة (2 ، 3) ؛ / / إضافة (الباحث أ ، الباحث ب)

نتيجة مزدوجة2 = سيتم استدعاء طريقة الآلة الحاسبة.إضافة (2.5 ، 3.7) ؛ / / الإضافة(مزدوجة أ ، مزدوجة ب)

كثافة العمليات نتيجة 3 = آلة حاسبة.سيتم استدعاء طريقة الإضافة(2, 3, 4); // سيتم استدعاء طريقة الإضافة(إنت أ ، إنت ب ، إنت ج)

في الحالة الأولى ، يتم استدعاء طريقة الإضافة(إنت أ ، إنت ب) ، حيث يتم تمرير عددين صحيحين. في الحالة الثانية ، يتم استدعاء طريقة الإضافة(مزدوجة أ ، مزدوجة ب) ، حيث يتم تمرير رقمين من الفاصلة العائمة. في الحالة الثالثة ، يتم استدعاء طريقة الإضافة(إنت أ ، إنت ب ، إنت ج) ، حيث يتم تمرير ثلاثة أعداد صحيحة.

طريقة يعتمد إعادة التحميل على توقيع الطريقة ، والذي يتضمن اسم الطريقة ومجموعة من معلماتها. يمكن الإعلان عن عدة طرق محملة بشكل زائد بنفس الاسم لتوقيعات مختلفة.

ما هي المعلمات التي يمكن تحميلها بشكل زائد في الطريقة?

طريقة التحميل الزائد هو القدرة على تحديد طرق متعددة بنفس الاسم في نفس الفئة ، ولكن بأعداد مختلفة من المعلمات أو أنواع مختلفة من المعلمات. وبالتالي ، عند استدعاء طريقة مع وسيطات معينة ، سيقوم المترجم بتحديد الطريقة مع المعلمات الأكثر ملاءمة.

في لغات البرمجة التي تدعم طريقة التحميل الزائد ، تتضمن المعلمات المختلفة التي يمكن تحميلها بشكل زائد ما يلي:

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

عند طرق التحميل الزائد ، من المهم أن تضع في اعتبارك أنه لا يمكن استخدام نوع قيمة الإرجاع لحل طريقة التحميل الزائد. يختار المترجم طريقة تعتمد على نوع الوسيطات ، وليس نوع قيمة الإرجاع.

مثال:

الطريقةالوصف
طباعة باطلة (كثافة العمليات ن)طريقة طباعة قيمة معلمة عدد صحيح.
طباعة باطلة (مزدوجة د)هي طريقة تطبع قيمة معلمة الفاصلة العائمة.
طباعة باطلة (سلسلة س)الطريقة التي تطبع معلمة السلسلة.
طباعة باطلة (إنت س ، إنت ص)طريقة تقوم بطباعة قيم اثنين من المعلمات الصحيحة.

، يقوم المترجم بتحديد الطريقة الأنسب بناء على الوسيطات التي تم تمريرها.

ما هي قيمة نوع الإرجاع عند طرق التحميل الزائد?

عند التحميل الزائد ، تكون قيمة نوع الإرجاع مهمة. نوع الإرجاع هو نوع البيانات المحدد في إعلان الطريقة ويشير إلى نوع البيانات الذي سيتم إرجاعه بواسطة الطريقة بعد إكمال مهمته.

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

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

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

وبالتالي ، فإن قيمة النوع الذي تم إرجاعه في طريقة التحميل الزائد أمر ضروري ، لأنه يحدد نوع البيانات الذي سيتم إرجاعه بالطريقة بعد تنفيذها ، ويؤثر أيضا على اختيار الطريقة التي يتم استدعاؤها في وقت الترجمة.

ما هي طريقة إعادة تعريف?

عند تطوير كود البرمجة بلغة برمجة ، غالبا ما يكون من الضروري تغيير سلوك الأساليب الموجودة في الفصل. للقيام بذلك ، يتم استخدام آلية تجاوز الطريقة.

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

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

شروط إعادة تعريف الطريقة:

  • يجب أن يكون للطريقة في الفئة الفرعية نفس اسم الطريقة في الفئة الأصل.
  • يجب أن يكون للطرق في فئتي الأصل والطفل نفس التوقيع (وليس بالضرورة نفس نوع الإرجاع).
  • يجب وضع علامة على الأسلوب في الفئة الأصل مع معدل وصول ظاهري أو مجردة.
  • يجب وضع علامة على الطريقة في الفئة الفرعية مع معدل تجاوز الوصول.

إذا لم يتم استيفاء هذه الشروط ، تعتبر الطريقة مثقلة ، ولا يتم تجاوزها.

كيف طريقة إعادة تعريف العمل في جاوة?

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

من أجل تجاوز طريقة الفئة الأصل ، تحتاج إلى القيام بما يلي:

  1. قم بإنشاء طريقة جديدة في الفئة الفرعية بنفس الاسم ونوع الإرجاع والمعلمة التي تم تعيينها كطريقة للفئة الأصل. هذا يسمح لك بإنشاء طريقة تجاوز في جافا.
  2. اكتب تطبيقا جديدا لهذه الطريقة في فئة الخلف. وهذا هو ، لتحديد وظيفة جديدة سيتم تنفيذها في طريقة إعادة تعريف.
  3. لاستدعاء طريقة من الطبقة الأم داخل طريقة تجاوز. هذا يسمح لك باستدعاء تنفيذ طريقة الطبقة الأم وتوسيع أو تغيير وظائفها.

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

فئة الوالدينفئة الوريث

في هذا المثال ، الفئة الأصل

  • فئة الوالدين
  • يحتوي على طريقة
  • برينتمساج()

، الذي يخرج الرسالة"فئة الأصل". فئة الوريث

فئة الأطفال

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

الكلمة الرئيسية الفائقة

. وهكذا ، عند استدعاء الطريقة

برينتمساج()

لكائن من الطبقة

فئة الأطفال

سيتم عرض رسالتين: "فئة الأصل "و"فئة الطفل".

عند استخدام طريقة تجاوز في جافا ، نضع في اعتبارنا أن:

يمكن تجاوز الطرق غير الثابتة فقط.

يتم تجاوز الطرق فقط إذا كانت الفئة الفرعية والفئة الأصل لها نفس الأسماء وأنواع الإرجاع ومجموعات المعلمات.

إذا كانت الطريقة في الفئة الفرعية لا تتضمن تغييرات أو إضافات على تنفيذ طريقة الفئة الأصل ، فلن تحتاج إلى إعادة تعريفها.

ما هو "تعدد الأشكال" وكيف يرتبط بالحمل الزائد وطرق التجاوز?

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

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

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

وبالتالي ، فإن طريقة التحميل الزائد وإعادة تعريف الطريقة هي آليات لتعدد الأشكال ، مما يسمح لك بإنشاء برامج متعددة الاستخدامات ومرنة. تسمح لك طرق التحميل الزائد باستخدام طرق بنفس الاسم ، ولكن بمعلمات مختلفة ، اعتمادا على السياق ، وتسمح لك الطرق المهيمنة بتغيير سلوك الطرق الموروثة في الفئات الفرعية.

الطريقة التي سيتم استدعاؤها إذا كانت هناك طرق مثقلة ومتجاوزة في نفس الوقت?

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

طريقة التحميل الزائد يتكون من تحديد عدة طرق بنفس الاسم ، ولكن مع مجموعات مختلفة من المعلمات. عند استدعاء طريقة مثقلة ، يحدد مترجم جافا الطريقة التي يجب استخدامها بناء على الوسيطات التي تم تمريرها. إذا كانت هناك طريقة تتطابق تماما مع الوسائط التي تم تمريرها ، فسيتم استدعاؤها.

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

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

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