اذهب إلى المحتوى
  • 0

مشكلة عند تنفيذ overloading للكود بلغة جافا

Zeina Almakdisi

السؤال

لدي الكود البرمجي التالي:

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 لكنه لا يعمل..

رابط هذا التعليق
شارك على الشبكات الإجتماعية

Recommended Posts

  • 0

يبدو أن لديكِ نفس اسم الدالة 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;
}

 

رابط هذا التعليق
شارك على الشبكات الإجتماعية

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...