الآخر الأسئلة

كثير ما سمعت مصطلحي override , overload في لغات البرمجة  ولم اتوصل للفرق بينهم وما هي فوائدهم اثناء استخدام الكود . الرجاء ممن يعرف ما الفرق وفوائد الاستخدام شرحها لي ويفضل شرح بعض الامثلة الواقعية عليها حتى لا انساها ...

  1. OverLoading تتم بين اكتر من ميثود فى كلاس واحد و يكون لهما نفس الاسم و الاختلاف بين الميثود و الأخرى يكون فى -الباراميترات -ال modifiers يعنى كونهم ,public , protected , private, default أو كما تشاء فى التنويع بينهم مع العلم أنه فى حالة الـ private لن يتسنى لك استخدام الدالة من الأوبجكت public class‫اقرأ المزيد

    OverLoading

    تتم بين اكتر من ميثود فى كلاس واحد و يكون لهما نفس الاسم

    و الاختلاف بين الميثود و الأخرى يكون فى
    -الباراميترات
    -ال modifiers يعنى كونهم ,public , protected , private, default أو كما تشاء فى التنويع بينهم
    مع العلم أنه فى حالة الـ private لن يتسنى لك استخدام الدالة من الأوبجكت

    public class tryMethods {
    
     
     public static void main(String[] args) {
      
      Methods m = new Methods();
      m.Print();
      
      m.Print(3);
      
      m.Print("Welcome");
      
     }
     
     
    }
    
    class Methods{
     
     public void Print(){
      
      System.out.println("No name or number...");
      
     }
     protected void Print(int i){
      
      System.out.println(Integer.toString(i*2));
      
     }
     public void Print(String x){
      
      System.out.println(x);
      
     }
     
     
    }

    Overriding

    شبيهة بال overloading إلى حد ما و لكنها
    – لا تحدث بين الدالتين فى كلاس واحد إنما بين كلاس و كلاس وارث منه
    -نفس البارامترات
    – الاختلاف فى الmodifiers يكون مقنن حيث يمكنك التغيير (فى الكلاس الوارث) و لكن لmodifier صلاحيته أعلى (أقل تقييدا) و يمكنك استخدام نفس ال modifier
    و لك أن تضيف static , synchronized,final أو غيرهم
    و التدريج من أعلى لأسفل كالتالى:
    public
    protected
    default
    ولا مجال للـ private هنا

    و إن قمت بأخذ object من الكلاس الوارث و نفذت الدالة من غير override سيتم تنفيذ دالة الكلاس الموروث منه
    إنما بتطبيق ال override يتم تنفيذ دالة الكلاس الوارث
    كلاس وارث = sub Class
    كلاس موروث منه = Super Class


    ملحوظة : يمكنت إضافة @Override
    قبل اسم الميثود التى ترغب فى أن تعمل Override لكى يساعدك ال compiler فى عمل override سليم 😉 
    مثال :

    public class TryInhirit {
    
     
     public static void main(String[] args) {
      
     Employee e = new Employee();
     float sal =e.countSal();
     // هنا يطبع الخاج الخاص ب Employee
     System.out.println(Float.toString(sal));
     
     Manager m = new Manager();
     sal = m.countSal();
     // هنا يطبع الخاج الخاص ب Manager
     System.out.println(Float.toString(sal));
     
     sal = m.countSal(2);
     // لاحظ هنا overload
     System.out.println(Float.toString(sal));
    }
    
    }
    class Employee{
     float sal=10;
     
       float countSal(){
      
      return sal;
     }
       
     void printHi(){
      System.out.println("Hi");
     }
     
    }
    
    class Manager extends Employee{
     @Override
      protected float countSal(){
      return sal*2;
     }
     
     float countSal(int x){
      
      return x*sal;
      
     }
     
    }
    قراءة أقل
    • 0

الحلقه قبل الأخيره من كورس oop جافا لم يتم توضيح Upcasting and Downcasting من قبل المهندس adel nasim ولكن شرحها في الفيديو بسرعه ولم يعطها حقها في الشرح وأتمني أن يشرحها بفيديو خاص بها .