الفرق بين التجاوز والتحميل الزائد

Anonim

تجاوز مقابل التحميل الزائد

الطريقة تجاوز الأسلوب وطريقة التحميل الزائد هما مفهوم / تقنية / ميزة موجودة في بعض لغات البرمجة. كلا المفاهيم تسمح للمبرمج لتقديم تطبيقات مختلفة للطرق مع نفس الاسم. طريقة تجاوز يسمح للمبرمج لتوفير تنفيذ بديل ضمن فئة فرعية لطريقة محددة بالفعل داخل الطبقة الفائقة. طريقة التحميل الزائد يسمح مبرمج لتقديم تطبيقات مختلفة لطرق متعددة بنفس الاسم (داخل نفس الفئة).

ما هو تجاوز؟

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

ما هو التحميل الزائد؟

طريقة التحميل الزائد هي ميزة توفرها بعض لغات البرمجة لإنشاء أكثر من طريقة واحدة بنفس الاسم، ولكن مع أنواع الإدخال والمخرجات المختلفة. في لغات البرمجة الحديثة مثل جافا، C #، C ++ و ف. نيت، هذه الميزة متاحة. يمكنك تحميل المزيد من الطرق عن طريق إنشاء طريقة أخرى بنفس الاسم ولكن بتوقيع طريقة مختلفة أو نوع إرجاع مختلف (أو كليهما). على سبيل المثال، إذا كان لديك الأسلوب 1 (type1 t1) و method1 (type2 t2) داخل نفس الفئة، ثم يتم تحميلها بشكل زائد. ثم سيكون على النظام أن يقرر أي واحد ليتم تنفيذها عندما يطلق عليه. يتم هذا التمايز من خلال النظر في نوع المعلمة (ق) تم تمريرها إلى الأسلوب. إذا كانت الوسيطة من type1، ثم يسمى التنفيذ الأول، بينما إذا كان من type2، ثم يسمى التنفيذ الثاني.

ما هو الفرق بين التجاوز والإفراط في التحميل؟

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

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