• 0

ما هو نوع هذا ال binding في java

لدي الكود بالاسفل

 

class A {



void a(int x,int y){

System.out.println(x+y);
}



void a2(int x,double y){

System.out.println(x+(int)y);
}


}





class B extends A {


@Override
void a2(int x,double y){

System.out.println(x+(int)y+4);

}






public class Test {
  
  
  
  public static void main(String[] args) {

    
   A b=new B();
    
    b.a2(2,2.0);
    }

 

 

النتيجة تكون 8

اي الميثود من بي تم استدعاؤها

 

في الواقع انا لا اعرف كيف اصيغ السؤال جيدا لكن ساحاول

 

اليس الكود بالاعلى هو overloading ؟؟؟؟

 

لو لم يكن كذلك فما هو ولما هو ليس كذلك ؟؟؟؟

 

وان كان كذلك فكيف تم استدعاء الميثود في B

لان ال overloading is a static binding

وايضا ال compiler لا يعرف ما هو الشيء الذي يشير اليه b في ال compile time حسب علمي

 

 

ولماذا ال overloading هو static  binding في الاساس لانه حتى لو كان هنالك overloading في بعض الحالات يمكنني ان اقوم ب overriding لل overloaded method

 

وايضا شيء اخر

من اي مكان يتم اخذ الميثود المراد استدعاؤها

من ال object ام من ال method area

لانه حسب علمي يتم تحويل الجافا فايل الى كلاس فايل وبعدها يتم انشاء كود مطابق للكود الذي في الكلاس فايل ووضعه في ال method area 

وهذا يعني ان الميثود المكتوبة في الكلاس  تقريبا يتم نقلها لل method area صحيح ؟؟؟؟

 

رجاء لو لم تفهم اي شيء من السؤال قل لي لكي احاول ان اصيغه بطريقة افضل (;

 

تمّ تعديل بواسطة Freshlybaked Chocolatechip

انشر على الشّبكات الاجتماعية


رابط هذه المساهمة

لا توجد أي إجابات على هذا السؤال بعد


يجب أن تكون عضوًا لدينا لتتمكّن من التعليق

انشاء حساب جديد

يستغرق التسجيل بضع ثوان فقط


سجّل حسابًا جديدًا

تسجيل الدخول

تملك حسابا مسجّلا بالفعل؟


سجّل دخولك الآن