English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
في هذا المقال، ستعرف عن تحميل الطريقة وكيفية تنفيذها في Java باستخدام أمثلة.
في Java، إذا كانت هناك أكثر منطريقةإذا كانت المعلمات مختلفة (عدد مختلف من المعلمات، أو نوع مختلف للمعلمات، أو كلاهما)، يمكن أن يكون لها نفس الاسم. تسمى هذه الطرق طريقة تحميل، و يُدعى هذا الخاصية تحميل الطريقة. على سبيل المثال:
void func() { ... } void func(int a) { ... } float func(double a) { ... } float func(int a, float b) { ... }
في هذا السياق، يتم تعطيل طريقة func(). هذه الطرق لها نفس الاسم، ولكن تختلف المعلمات التي تأخذها.
لاحظ أن نوع العائد لهذه الطرق مختلف. يمكن أن يكون لديها نوع عائد مختلف، أو لا، ولكن يجب أن تكون المعلمات المقدمة مختلفة.
افترض أنك يجب تنفيذ عملية الجمع لعدد معين، ولكن يمكن أن يكون هناك أي عدد من المعلمات (للغرض من البساطة، يمكن القول عن 2 أو 3 معلمات).
لإكمال المهمة، يمكن إنشاء طريقتين من نوع sum2num(int, int) و sum3num(int, int, int) للعناصر الثنائية و الثلاثية. ولكن قد يشعر باقي المبرمجين وأنت في المستقبل بالحيرة، لأن سلوك هاتين الطريقتين متشابه، ولكن الأسماء مختلفة.
أفضل طريقة لإنجاز هذه المهمة هي تحميل الطريقة. وبناءً على المعامل المرسل، يتم استدعاء أحد الطرق المحمّلة. هذا يساعد في زيادة قراءة البرنامج.
هذه هي الطرق المختلفة لتنفيذ تحميل الطريقة:
class MethodOverloading { private static void display(int a){ System.out.println("المعامل: " + a); } private static void display(int a, int b){ System.out.println("المعامل: " + a + " و " + b); } public static void main(String[] args) { display(1); display(1, 4); } }
الإخراج:
المعامل: 1 المعامل: 1 و 4
class MethodOverloading { //يأخذ هذا الطريقة int private static void display(int a){ System.out.println("لقد حصلنا على بيانات عددية."); } //يأخذ هذا الطريقة Object String private static void display(String a){ System.out.println("لقد حصلنا على Object String."); } public static void main(String[] args) { display(1); display("Hello"); } }
الإخراج:
لقد حصلنا على بيانات عددية لقد حصلنا على Object String.
في هذا السياق، تتعامل كلاً من الطرق المعدلة مسبقًا مع معامل واحد. ولكن، واحدة منهم تأخذ معامل من نوع int، بينما تأخذ الأخرى معامل من نوع Object String.
class HelperService { return String.format( } return String.format( } return String.format( } public static void main(String[] args) { HelperService hs = new HelperService(); System.out.println(hs.formatNumber(500)); System.out.println(hs.formatNumber(89.9934)); System.out.println(hs.formatNumber("550")); } }
عند تشغيل هذا البرنامج، تكون النتيجة كما يلي:
500 89.993 550.00
ملاحظةفي Java، يمكنك أيضًا تحميل إعادة تعريف بناء الجسم بشكل مشابه للطريقة.
اقتراحات مرتبطة: Java Overloading constructors
إذا كانت الطريقة تأخذ معلمات مختلفة، فإنها يمكن أن تكون لها نفس الاسم في نفس الفئة. هذا الميزة تسمى Overloading methods.
يمكن تحقيق تحميل إعادة تعريف الطريقة عبر أي من الطرق التالية:
تغيير عدد المعلمات.
أو تغيير نوع البيانات للمعلمات.
لا يمكن تحقيق تحميل إعادة تعريف الطريقة فقط عن طريق تغيير نوع العودة للطريقة.