Zeina Almakdisi نشر 23 يناير 2022 أرسل تقرير نشر 23 يناير 2022 لدي الكود البرمجي التالي: public int add(int a, int b) { int sum = a + b; return sum; } public double add(int a, int b) { double sum = a + b; return sum; } عند التنفيذ يظهر الخطأ التالي: error method add is already defined in class أحاول عمل overload لكنه لا يعمل.. 1 اقتباس
0 Wael Aljamal نشر 23 يناير 2022 أرسل تقرير نشر 23 يناير 2022 يبدو أن لديكِ نفس اسم الدالة add مكتوبة مرتين ولكن كل منها له نمط إعادة مختلف الأولى integer و الثانية double. ولكن تم اعتبارها دالة مكررة ولم يتم تطبيق مفهوم overload. لكن شروط عمل التحميل الزائد أو overload مختلفة عن هذا. حيث أن المترجم compiler لا يقوم بالتمييز بين الدوال بالنسبة لنمط الإرجاع، بل يتأكد من التالي: يتم عمل overload للدوال العادية و الدوال البانية constructor يجب أن يملكوا نفس الاسم يمكن للدالتين اللتين لهما نفس الاسم من امتلاك: عدد وسطاء مختلف أو أنواع وسطاء مختلفة (اختلاف في عدد أو نوع الوسطاء). أو نفس عدد الوسطاء مع اختلاف ترتيبهم في حال كان لهم أنواع مختلفة (وسيطين من نفس النوع لا يعتبر overload). أمثلة: دالتين لهما عدد مختلف من الوسطاء: public int add(int a, int b) { int sum = a + b; return sum; } // غير عدد من الوسطاء هنا 3 بدل 2 public int add(int a, int b, int c) { int sum = a + b + c; return sum; } دالتين لهما ننوع مختلف من الوسطاء public int add(int a, int b, int c) { int sum = a + b + c; return sum; } // اختلاف نوع الوسطاء public double add(double a, double b, double c) { double sum = a + b + c; return sum; } اقتباس
السؤال
Zeina Almakdisi
لدي الكود البرمجي التالي:
عند التنفيذ يظهر الخطأ التالي:
error method add is already defined in class
أحاول عمل overload لكنه لا يعمل..
1 جواب على هذا السؤال
Recommended Posts
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.