تجاوز مقابل التحميل الزائد
طريقة التجاوز والطريقة التحميل الزائد مفهومان / تقنيات / ميزة موجودة في بعض لغات البرمجة. كلا المفهومين يسمحان للمبرمج بتوفير تطبيقات مختلفة للطرق التي تحمل الاسم نفسه. يسمح تجاوز الطريقة للمبرمج بتوفير تطبيق بديل ضمن فئة فرعية لطريقة محددة بالفعل داخل صنفها الفائق. أسلوب التحميل الزائد يسمح للمبرمج بتوفير تطبيقات مختلفة لطرق متعددة بنفس الاسم (ضمن نفس الفئة).
ما هو التجاوز؟
كما هو مذكور أعلاه ، يمكن للفصل أن يمتد إلى فئة فائقة أو فئة أصل ، في لغات البرمجة الموجهة للكائنات.يمكن أن يكون للفئة الفرعية أساليبها الخاصة أو يمكن أن يكون لها تطبيقاتها الخاصة اختياريًا للطرق المحددة بالفعل في صنفها الأصلي (أو إحدى فئاتها الأصلية). لذلك عندما يحدث هذا الأخير ، يطلق عليه تجاوز الطريقة. بعبارة أخرى ، إذا كان الصنف الفرعي يوفر تنفيذًا لطريقة لها نفس التوقيع ونوع الإرجاع كطريقة تم تحديدها بالفعل في إحدى فئاتها الأصلية ، يُقال إن هذه الطريقة قد تم تجاوزها (استبدالها) بتطبيق الفئة الفرعية. لذلك ، إذا كانت هناك طريقة تم تجاوزها في الفصل ، فسيتعين على نظام وقت التشغيل تحديد الطريقة المستخدمة. يتم حل هذه المشكلة من خلال النظر في النوع الدقيق للكائن المستخدم لاستدعائه. إذا تم استخدام كائن من الفئة الرئيسية لاستدعاء الطريقة التي تم تجاوزها ، فسيتم استخدام التنفيذ في الفئة الأصلية. وبالمثل ، إذا كان يتم استخدام كائن من الفئة الفرعية ، فسيتم استخدام تطبيق الفئة الفرعية. تسمح لغات البرمجة الحديثة مثل Java و Eifell و C ++ و Python بتجاوز الطريقة.
ما هو التحميل الزائد؟
طريقة التحميل الزائد هي ميزة توفرها بعض لغات البرمجة لإنشاء أكثر من طريقة واحدة بنفس الاسم ، ولكن مع أنواع مختلفة من المدخلات والمخرجات. تتوفر هذه الميزة في لغات البرمجة الحديثة مثل Java و Cو C ++ و VB. NET. يمكنك زيادة تحميل طريقة عن طريق إنشاء طريقة أخرى بنفس الاسم ولكن بتوقيع طريقة مختلف أو نوع إرجاع مختلف (أو كليهما). على سبيل المثال ، إذا كان لديك الأسلوب 1 (النوع 1 t1) والطريقة 1 (النوع 2 t2) داخل نفس الفئة ، فسيتم تحميلهما فوق طاقتهما. ثم سيتعين على النظام تحديد النظام الذي سيتم تنفيذه عند استدعائه. يتم إجراء هذا التمايز من خلال النظر إلى نوع المعلمة (المعلمات) التي تم تمريرها إلى الطريقة. إذا كانت الوسيطة من النوع 1 ، فسيتم استدعاء التنفيذ الأول ، أما إذا كان من النوع 2 ، فسيتم استدعاء التنفيذ الثاني.
ما الفرق بين التجاوز والحمل الزائد؟
على الرغم من أنه يتم استخدام تجاوز الطريقة والحمل الزائد للطريقة لتوفير طريقة ذات تطبيقات مختلفة ، إلا أن هناك اختلافات رئيسية بين هذين المفهومين / التقنيات.بادئ ذي بدء ، تظل موضوعات تجاوز الطريقة دائمًا داخل فصول مختلفة ، بينما يظل الأشخاص الذين يعانون من زيادة الوزن في نفس الفصل. هذا يعني أن التجاوز ممكن فقط في لغات البرمجة الموجهة للكائنات التي تسمح بالوراثة ، بينما يمكن أن يكون التحميل الزائد متاحًا بلغة غير موجهة أيضًا. بعبارة أخرى ، أنت تتجاوز طريقة في الفئة الممتازة لكنك تفرط في تحميل طريقة داخل صنفك.
اختلاف آخر هو أن الطرق المتجاوزة لها نفس اسم الطريقة وتوقيع الطريقة ونوع الإرجاع ، ولكن يجب أن تختلف الطرق المحملة بشكل زائد في التوقيع أو نوع الإرجاع (يجب أن يكون الاسم هو نفسه). للتمييز بين طريقتين متجاوزتين ، النوع الدقيق للكائن المستخدم لاستدعاء معرف الطرق المستخدمة ، بينما للتمييز بين طريقتين محملتين بشكل زائد ، يتم استخدام أنواع المعلمات. الفرق الرئيسي الآخر هو أن التحميل الزائد يتم حله في وقت الترجمة ، بينما يتم حل التجاوز في وقت التشغيل.