مقال النهاردة لشرح مفهوم اخر من مفاهيم لغة الجافا وهو مايعرف بالتحميل الزائد – Methods Overloading
ببساطة هى تعريف اكثر من دالة بنفس الاسم داخل نفس الكلاس ولكن ببراميتر مختلف .
انا هوضح كلامى بمثال بسيط :
باأفتراض ان الكلاس يحتوى على دالة ( )add
وهذة الدالة تاخذ اثنين براميتر من النوع الرقمى الصحيح وتقوم بجمعهم .
public int add( int x,int y){
return x+y;
}
بإفتراض طلب منى عمل دالة اخرى لجمع ثلاث ارقام صحيحين ودالة اخرى لجمع رقمين عشرين .
من خلال ماتم تعلمة سابقا سوف يتم عمل دالة اخرى اسمها مثلا addThree ودالة اخرى اسمها addDouble وهكذا يتم عمل اكثر من دالة .
من هنا ظهر مفهوم overloading وهو اكثر من دالة تؤدى نفس الوظيفة داخل نفس الكلاس ولكن بشرط ان تكون بنفس الاسم وببراميتر مختلف .
فى حاجة مهمة جدا لازم اوضحها هى ان تعريف الدالة signature بيكون من خلال :
– اسم الدالة – البراميتر
بمعنى لو عملت دالة اسمها ( )add بدون براميتر تقوم بجمع اى رقمين وعاوز انشاء دالة اخرى بدون براميتر وبنفس الاسم جافا هتعترض .
وبالتالى لو عاوز اكرر اسم الدالة داخل نفس الكلاس لابد ان نعطى كل دالة براميتر مختلف عن الاخرى والاختلاف هنا فى عدد البراميتر او النوع او الاثنين معا .
وبالتالى يتم كتابة باقى الدوال كالتالى:
public double add( double x,double y){
return x+y;
}
public int add(int x,int y,int i){
return x+y+i;
}
ثم يتم استدعاء الدالة وتمرير البرامتير
public class Main{
عند عمل كائن من كلاس Cal وطباعة الدالة ( )add .
Cal c=new Cal( );
System.out.print(c.add(5,3));
سوف يستدعى الدالة add التى تاخد اثنين براميتر من النوع الرقمى الصحيح .
System.out.print(c.add(2.3,4.6);
سوف يستدعى الدالة add التى تاخد اثنين براميتر من النوع العشرى .وهكذا بالنسبة للدالة add التى تاخد ثلاثة براميتر .
نقلا عن مهندس / Fawzy Syam