التحميل الزائد للأساليب (Method Overloading)
جزء من قسم الأساسيات في رحلة Java على Coddy. الدرس 54 من 73.
في Java، يتيح لك تحميل الطرق تعريف عدة طرق بالاسم نفسه ولكن بمعاملات مختلفة. وهذا يعني أنه يمكنك امتلاك عدة طرق تؤدي وظيفة متشابهة، لكنها تعمل على أنواع بيانات مختلفة أو على عدد مختلف من الوسائط.
المهم أن يكون لكل طريقة محمّلة بشكل زائد توقيع طريقة فريد. ويتحدد توقيع الطريقة باسمها ونوع معلماتها وترتيبها.
فيما يلي القواعد الأساسية لتحميل الطرق:
- الاسم نفسه: يجب أن تحمل جميع الدوال المُحمَّلة فوقيًا الاسم نفسه.
- معاملات مختلفة: يجب أن يختلف كل إصدار من الدالة في عدد المعاملات أو أنواعها أو كليهما.
- نوع القيمة المُعادة لا يكفي: لا يمكن أن تختلف الطرق المحمّلة فوقيًا في نوع القيمة المُعادة فقط. يجب أن تكون قوائم معلماتها مختلفة.
إليك مثالًا لتوضيح التحميل الزائد للطرائق:
public class MathUtils {
public static int add(int a, int b) {
return a + b;
}
public static double add(double a, double b) {
return a + b;
}
public static int add(int a, int b, int c) {
return a + b + c;
}
}في هذا المثال، لدينا ثلاث دوال اسمها add. تجمع الأولى عددين صحيحين، وتجمع الثانية عددين عشريين، وتجمع الثالثة ثلاثة أعداد صحيحة.
تحدد Java الطريقة التي يجب استدعاؤها بناءً على الوسائط المُمرَّرة عند استدعاء الطريقة.
عندما لا يتطابق أي تحميل زائد تمامًا مع أنواع الوسائط، تختار Java التحميل الذي يمكن الوصول إليه عبر تحويل توسيع ضمني. على سبيل المثال، مع display(int a) وdisplay(double a)، يستخدم الاستدعاء display(5.0f) النسخة التي تستقبل double، لأن النوع float يمكن توسيعه إلى double، لكنه لا يمكن أن يصبح int من دون تحويل صريح.
يجعل تحميل الطرق الزائد الشيفرة أكثر سهولة في القراءة وإعادة الاستخدام. بدلًا من إنشاء أسماء مختلفة للطرق التي تنفذ مهامًا متشابهة (مثل addInts وaddDoubles وaddThreeInts)، يمكنك استخدام اسم واحد، add، وترك المترجم يختار الطريقة المناسبة بناءً على السياق.
تذكّر: يتطلب التحميل الزائد اختلاف أنواع المعاملات أو أعدادها، وليس مجرد اختلاف أسماء المعاملات أو أنواع القيم المُعادة.
جرّب بنفسك
لا يتضمّن هذا الدرس تحدّيًا برمجيًا.
يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
جميع دروس الأساسيات
4المعاملات - الجزء الأول
المعاملات الحسابيةمعامل باقي القسمة (Modulo)الزيادة والنقصانالزيادة والنقصان اللاحقةاختصارات العمليات الحسابيةمعاملات المقارنةمقارنة النصوص7أساسيات الإدخال والإخراج
دوال System.outتنسيق المخرجاتكلاس Scannerمراجعة - حتى 120مراجعة - صح أم خطأ10الأساليب (الدوال)
تعريف الأساليبمعاملات الأساليبأنواع الإرجاعالتحميل الزائد للأساليب (Method Overloading)مراجعة - دالة Sigmaمراجعة - دالة التحقق (Validation)أساليب Void5المعاملات - الجزء الثاني
المعاملات المنطقية - الجزء الأولالمعاملات المنطقية - الجزء الثانيمراجعة - المنطق البسيطالمعاملات المنطقية - الجزء الثالثالمعاملات المنطقية - الجزء الرابع3المتغيرات - الجزء الثاني
الثوابتقواعد التسميةمراجعة - تهيئة المتغيراتتحويل الأنواع - الجزء الأولتحويل الأنواع - الجزء الثاني6اتخاذ القرار
جملة Ifجملة If - Elseجملة Switchالمعامل الثلاثيمراجعة - If Elseجملة If - Else المتداخلةتدرّب بنفسك: مترجم Java عبر الإنترنت