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

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

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

الآن لنفترض أننا قمنا بتعريف كلاس إسمه MyMath1 يحتوي دالة إسمها max() تقوم بمقارنة أي عددين نمررهما لها ثم إرجاع العدد الأكبر بينهما.
بعد مدة قررنا إنشاء نسخة متطورة من هذا الكلاس إسمها MyMath2 تعتمد على الكلاس MyMath1. إذاً الكلاس الجديد يحتوي على نسخة متطورة من الدالة max() تقارن ثلاث أرقام.

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


مثال

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

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

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

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

The max number is: 25.0
The max number is: 35.0
The max number is: 25.0 The max number is: 35.0

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