Programming Basics SQL HTML CSS JavaScript Python C++ Java JavaFX Swing Problem Solving English English Conversations Computer Fundamentals Learn Typing

Javaمثال حول تعريف دوال تعتمد على دوال موجودة قبلها في نفس الكلاس في جافا

المثال التالي هو من أهم أمثلة الـ Overloading لأننا سنبني دوال تعتمد على دوال موجودة قبلها.

الآن لنفترض أننا قمنا بتعريف كلاس إسمه MyMath يحتوي على ثلاث دوال إسمهم max() و نوعهم public double.

  • الدالة الأولى تأخذ 2 باراميتر عبارة عن أرقام, و هي تعطينا العدد الأكبر بينهما.
  • الدالة الثانية تأخذ 3 باراميترات عبارة عن أرقام, و هي تعطينا العدد الأكبر بينهم.
  • الدالة الثالثة تأخذ 4 باراميترات عبارة عن أرقام, و هي تعطينا العدد الأكبر بينهم.

بعد إنشاء هذا الكلاس, قمنا بإنشاء الكلاس Main و إستدعاء الدوال الثلاثة فيه.


مثال

MyMath.java
public class MyMath {
// هذه الدالة تعطيها رقمين فترجع لك العدد الأكبر بينهما
public double max(double a, double b) {
if(a>b)
return a;
else
return b;
}
// هذه الدالة تعطيها ثلاثة أرقام فترجع لك العدد الأكبر بينهم
// و هي تعتمد على الدالة السابقة لمقارنة أول عددين مع العدد الثالث
public double max(double a, double b, double c) {
if(max(a,b)>c)
return max(a,b);
else
return c;
}
// هذه الدالة تعطيها ثلاثة أرقام فترجع لك العدد الأكبر بينهم
// و هي تعتمد على الدالتين السابقتين لمقارنة أول ثلاث أعداد مع العدد الرابع
public double max(double a, double b, double c, double d) {
if(max(a,b,c)>d)
return max(a,b,c);
else
return d;
}
}
public class MyMath { // هذه الدالة تعطيها رقمين فترجع لك العدد الأكبر بينهما public double max(double a, double b) { if(a>b) return a; else return b; } // هذه الدالة تعطيها ثلاثة أرقام فترجع لك العدد الأكبر بينهم // و هي تعتمد على الدالة السابقة لمقارنة أول عددين مع العدد الثالث public double max(double a, double b, double c) { if(max(a,b)>c) return max(a,b); else return c; } // هذه الدالة تعطيها ثلاثة أرقام فترجع لك العدد الأكبر بينهم // و هي تعتمد على الدالتين السابقتين لمقارنة أول ثلاث أعداد مع العدد الرابع public double max(double a, double b, double c, double d) { if(max(a,b,c)>d) return max(a,b,c); else return d; } }

Main.java
public class Main {
public static void main(String[] args) {
MyMath m = new MyMath(); // لإستدعاء الدوال منه MyMath هنا قمنا بإنشاء كائن من الكلاس
System.out.println("The max number is: " +m.max(5, 20)); // هنا سيتم إستدعاء الدالة التي تأخذ 2 باراميتر
System.out.println("The max number is: " +m.max(5, 20, 15)); // هنا سيتم إستدعاء الدالة التي تأخذ 3 باراميترات
System.out.println("The max number is: " +m.max(5, 20, 15, 30)); // هنا سيتم إستدعاء الدالة التي تأخذ 4 باراميترات
}
}
public class Main { public static void main(String[] args) { MyMath m = new MyMath(); // لإستدعاء الدوال منه MyMath هنا قمنا بإنشاء كائن من الكلاس System.out.println("The max number is: " +m.max(5, 20)); // هنا سيتم إستدعاء الدالة التي تأخذ 2 باراميتر System.out.println("The max number is: " +m.max(5, 20, 15)); // هنا سيتم إستدعاء الدالة التي تأخذ 3 باراميترات System.out.println("The max number is: " +m.max(5, 20, 15, 30)); // هنا سيتم إستدعاء الدالة التي تأخذ 4 باراميترات } }

سنحصل على النتيجة التالية عند التشغيل.

The max number is: 20.0
The max number is: 20.0
The max number is: 30.0
The max number is: 20.0 The max number is: 20.0 The max number is: 30.0

كما لاحظت هنا, في كل مرة قمنا فيها باستدعاء الدالة max() وجدنا أن المترجم قام باستدعاء الدالة max() التي تحتوي على نفس عدد الباراميترات الذي كنا نمرره لها, و داخلياً ربطنا الدوال ببعضها.