تسمح Java بالتحميل الزائد للطرق، حيث يمكن لطريقتين أو أكثر من نفس الفئة مشاركة نفس الاسم.
يحدث التحميل الزائد للطريقة عندما تكون تعريفات معلمات الطريقة مختلفة.
طريقة التحميل الزائد هي طريقة لتنفيذ تعدد الأشكال في Java.
لزيادة تحميل طريقة ما، من الضروري الإعلان عن إصدارات مختلفة منها.
يختار المترجم تلقائيًا الطريقة الصحيحة بناءً على المعلمات.
قيد مهم: يجب أن تختلف الطرق المحملة بشكل زائد في نوع و/أو عدد المعلمات، وليس فقط نوع الإرجاع.
يمكن أيضًا أن تختلف الأساليب المحملة بشكل زائد في أنواع الإرجاع الخاصة بها، ولكن المعلمات ضرورية لاختيار الطريقة الصحيحة.
عند استدعاء أسلوب محمّل بشكل زائد، يتم تنفيذ الإصدار الذي يحتوي على معلمات تطابق الوسائط.
تم تحميل طريقة ovlDemo() بشكل زائد أربع مرات بتوقيعات مختلفة:
الإصدار الأول: لا توجد معلمات.
الإصدار الثاني: بمعلمة عدد صحيح.
الإصدار الثالث: مع معلمتين صحيحتين.
الإصدار الرابع: بمعلمتين مزدوجتين.
الإصداران الأولان من ovlDemo() يُرجعان فارغين، بينما يُرجع الإصداران الأخيران قيمة.
لا يتأثر التحميل الزائد للطريقة بنوع الإرجاع.
ستؤدي محاولات استخدام كلا الإصدارين من ovlDemo() مع التمييز بين التوقيعات فقط حسب نوع الإرجاع إلى حدوث خطأ.
الاختلاف في أنواع الإرجاع ليس كافيًا لزيادة التحميل على الطريقة في Java.
يوضح المثال أن طريقتين بنفس التوقيع، حتى مع أنواع إرجاع مختلفة، تسبب خطأ.
تقوم Java بإجراء تحويلات تلقائية للنوع، وتنطبق هذه التحويلات أيضًا على معلمات الطرق المحملة بشكل زائد.
يوضح المثال نسختين من الأسلوب f(): أحدهما بمعلمة int والآخر بمعلمة مزدوجة.
يتم تحويل قيم الأنواع بايت وقصيرة تلقائيًا إلى int، مما يستدعي الطريقة f(int).
يتم تحويل القيم العائمة إلى مضاعفة عن طريق استدعاء الأسلوب f(double).
تحدث التحويلات التلقائية عندما لا يكون هناك تطابق مباشر بين المعلمة والوسيطة.
إضافة إصدار من f() مع معلمة بايت قد يغير كيفية التعامل مع القيم.
مع الإصدار الحالي، عندما يتم استدعاء f() باستخدام وسيطة بايت، يتم استدعاء f(byte) مباشرة، دون التحويل التلقائي إلى int.
يسمح التحميل الزائد للطريقة بتعدد الأشكال في Java، مما يسهل تنفيذ نموذج "واجهة واحدة، طرق متعددة".
في اللغات التي لا تحتوي على دعم التحميل الزائد، يجب أن يكون للطرق المماثلة لأنواع البيانات المختلفة أسماء مختلفة (على سبيل المثال abs()، labs()، fabs() في لغة C).
تسمح لك Java باستخدام نفس الاسم للطرق التي تحتوي على أنواع مختلفة من الوسائط، مثل طريقة abs() لفئة Math، والتي يتم تحميلها بشكل زائد لأنواع رقمية مختلفة.
يقلل التحميل الزائد من التعقيد من خلال السماح للطرق ذات الصلة بمشاركة اسم شائع.
يتم اختيار الإصدار الصحيح من الطريقة بواسطة المترجم بناءً على نوع الوسيطة.
على الرغم من أن الأساليب المثقلة يمكن أن تؤدي أنشطة مختلفة، إلا أنها يجب أن تكون مرتبطة للحفاظ على الوضوح والتماسك.
تجنب استخدام أسماء الطرق المحملة بشكل زائد للعمليات غير ذات الصلة، لأن هذا قد يربك غرض الكود.
تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.
Copyright© 2022 湘ICP备2022001581号-3