اذهب إلى المحتوى

السؤال

Recommended Posts

  • 1
نشر

لتقليل التعقيد وتبسيط اللغة ، لا يتم دعم الوراثة المتعددة في جافا.

ضع في اعتبارك سيناريو حيث A و B و C عبارة عن ثلاث فئات. ترث الفئة C الفئتين A و B. إذا كان للفئات A و B نفس الدوال وقمت باستدعائها من كائن فئة فرعية ، فسيكون هناك غموض لاستدعاء طريقة الفئة A أو B.

انظر الى هذا المثال وهو مثال خاطئ في لغة جافا

class A{  
	void msg(){
      System.out.println("Hello");
    }  
}  

class B{  
	void msg(){
      System.out.println("Welcome");
    }  
}  
class C extends A,B{ 
   
 public static void main(String args[]){  
   C obj=new C();  
   obj.msg(); // هنا سيتم استدعاء الدالة من اي صنف ؟

 }  
}  

وهنا يحدث خطأ Compile Time Error

نظرًا لأن أخطاء وقت الترجمة أفضل من أخطاء وقت التشغيل ، فإن Java تعرض خطأ وقت الترجمة إذا ورثت فئتين. لذلك سواء كان لديك نفس الطريقة أو مختلفة ، سيكون هناك خطأ في وقت التجميع.

  • 0
نشر

بسبب ما يدعى بمشكلة الألماسة،

بفرض أن الصنفين B و C يرثان من A، وكل من B و C قاما بتحميل override تابع موروث من A،
حين يقوم الصنف D بالوراثة من كلا الصنفين السابقين أي من نسختي التابع سيرث هل التي في C أم في B

 220px-Diamond_inheritance.svg.png

لذلك في جافا الحل كان بمنع الوراثة المتعددة، بينما هناك لغات أخرى تتضمن حلًا لتلك المشكلة مثل ++C و LISP.

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...