logo

أنواع الميراث في جاوة

ميراث هي الميزة الأقوى للبرمجة الموجهة للكائنات. يسمح لنا بوراثة خصائص فئة واحدة إلى فئة أخرى. في هذا القسم سنناقش أنواع الميراث في جاوة متعمقة مع أمثلة من واقع الحياة. كما سنقوم بإنشاء برامج جافا لتنفيذ مفهوم أنواع الميراث المختلفة.

ميراث

ميراث هي آلية لقيادة فئة جديدة من فئة موجودة. تُعرف الفئة (القديمة) الحالية باسم الطبقة الأساسية أو فئة فائقة أو فئة الوالدين . تُعرف الفئة الجديدة باسم أ فئة مشتقة أو فئة فرعية أو فئة الطفل . يسمح لنا باستخدام خصائص وسلوك فئة واحدة (الوالد) في فئة أخرى (الطفل).

تُعرف الفئة التي يتم توريث خصائصها باسم فئة الوالدين وتُعرف الفئة التي ترث خصائص الفئة الأصلية باسم فئة الطفل . وبالتالي، فإنه ينشئ علاقة بين فئة الوالدين والطفل المعروفة باسم الوالدين والطفل أو هو علاقة.

لنفترض أن هناك فئتين مسماتين أب و طفل ونريد أن نرث خصائص فئة الأب في فئة الطفل. يمكننا تحقيق ذلك باستخدام يمتد الكلمة الرئيسية.

 //inherits the properties of the Father class class Child extends Father { //functionality } 

أنواع الميراث في جاوة

متى يجب أن نستخدم الميراث؟

الميراث يوفر قابلية إعادة الاستخدام من التعليمات البرمجية خاصة عندما يكون هناك نطاق واسع من التعليمات البرمجية لإعادة استخدامها. كما أنه يحدد العلاقة بين الفئات المختلفة التي تعرف باسم هو علاقة. يمكننا أيضًا استخدامه إذا أردنا تحقيقه تجاوز الأسلوب .

نقطة لنتذكر

  • لا يمكن وراثة المُنشئ في Java.
  • لا يتم توريث الأعضاء الخاصين في Java.
  • الميراث الدوري غير مسموح به في Java.
  • تعيين مرجع الأصل إلى الكائنات التابعة.
  • يتم تنفيذ المنشئين بسبب وجود super() في المنشئ.

أنواع الميراث

تدعم Java الأنواع الأربعة التالية من الميراث:

ما هو هاشتاج جافا
  • ميراث واحد
  • الميراث متعدد المستويات
  • الميراث الهرمي
  • الميراث الهجين
أنواع الميراث في جاوة

ملحوظة: الوراثة المتعددة غير مدعومة في Java.

دعونا نناقش كل منها مع المثال المناسب.

ميراث واحد

في الميراث الفردي، يتم اشتقاق فئة فرعية من فئة فائقة واحدة فقط. إنه يرث خصائص وسلوك فئة ذات والد واحد. في بعض الأحيان يُعرف أيضًا باسم ميراث بسيط .

أنواع الميراث في جاوة

في الشكل أعلاه، الموظف هو فئة الأصل والمدير التنفيذي هو فئة فرعية. ترث الطبقة التنفيذية جميع خصائص فئة الموظف.

بحث ثنائي

دعونا ننفذ آلية الميراث الفردي في برنامج Java.

تنفيذي.java

 class Employee { float salary=34534*12; } public class Executive extends Employee { float bonus=3000*6; public static void main(String args[]) { Executive obj=new Executive(); System.out.println('Total salary credited: '+obj.salary); System.out.println('Bonus of six months: '+obj.bonus); } } 

انتاج:

 Total salary credited: 414408.0 Bonus of six months: 18000.0 

الميراث متعدد المستويات

في وراثة متعددة المستويات ، يتم اشتقاق الفصل من فصل مشتق أيضًا من فصل آخر يسمى الميراث متعدد المستويات. بكلمات بسيطة، يمكننا القول أن الفصل الذي يحتوي على أكثر من فصل أصل واحد يسمى الميراث متعدد المستويات. لاحظ أن الفصول يجب أن تكون على مستويات مختلفة. ومن ثم، توجد فئة أساسية واحدة وفئة مشتقة واحدة ولكن توجد فئات أساسية وسيطة متعددة.

أنواع الميراث في جاوة

في الشكل أعلاه، ترث علامات الفصل أعضاء أو أساليب طلاب الفصل. فئة الرياضة ترث أعضاء فئة العلامات. لذلك، فإن فئة الطالب هي الفئة الأم للفئة Marks والفئة Marks هي الفئة الأم للفئة Sports. ومن ثم، فإن فئة الرياضة ترث ضمنيًا خصائص الطالب إلى جانب علامات الفصل.

دعونا ننفذ آلية الميراث متعدد المستويات في برنامج Java.

MultilevelInheritanceExample.java

 //super class class Student { int reg_no; void getNo(int no) { reg_no=no; } void putNo() { System.out.println('registration number= '+reg_no); } } //intermediate sub class class Marks extends Student { float marks; void getMarks(float m) { marks=m; } void putMarks() { System.out.println('marks= '+marks); } } //derived class class Sports extends Marks { float score; void getScore(float scr) { score=scr; } void putScore() { System.out.println('score= '+score); } } public class MultilevelInheritanceExample { public static void main(String args[]) { Sports ob=new Sports(); ob.getNo(0987); ob.putNo(); ob.getMarks(78); ob.putMarks(); ob.getScore(68.7); ob.putScore(); } } 

انتاج:

 registration number= 0987 marks= 78.0 score= 68.7 

الميراث الهرمي

إذا تم اشتقاق عدد من الفئات من فئة أساسية واحدة، يتم استدعاؤها الميراث الهرمي .

أنواع الميراث في جاوة

في الشكل أعلاه، ترث فئات العلوم والتجارة والفنون فئة رئيسية واحدة تسمى الطالب.

دعونا ننفذ آلية الميراث الهرمي في برنامج جافا.

HierarchicalInheritanceExample.java

رسم تخطيطي لنموذج e-r
 //parent class class Student { public void methodStudent() { System.out.println('The method of the class Student invoked.'); } } class Science extends Student { public void methodScience() { System.out.println('The method of the class Science invoked.'); } } class Commerce extends Student { public void methodCommerce() { System.out.println('The method of the class Commerce invoked.'); } } class Arts extends Student { public void methodArts() { System.out.println('The method of the class Arts invoked.'); } } public class HierarchicalInheritanceExample { public static void main(String args[]) { Science sci = new Science(); Commerce comm = new Commerce(); Arts art = new Arts(); //all the sub classes can access the method of super class sci.methodStudent(); comm.methodStudent(); art.methodStudent(); } } 

انتاج:

 The method of the class Student invoked. The method of the class Student invoked. The method of the class Student invoked. 

الميراث الهجين

الوسائل الهجينة تتكون من أكثر من واحد. الميراث الهجين هو مزيج من نوعين أو أكثر من الميراث.

أنواع الميراث في جاوة

في الشكل أعلاه، الجد هو فئة فائقة. ترث فئة الأب خصائص فئة الجد. حيث أن الأب والجد يمثلان ميراثًا واحدًا. علاوة على ذلك، فإن فئة الأب ترثها فئة الابن والابنة. وهكذا يصبح الآب هو الصف الأم للابن والابنة. تمثل هذه الفئات الميراث الهرمي. مجتمعة، فإنه يدل على الميراث الهجين.

دعونا ننفذ آلية الميراث الهجين في برنامج جافا.

Daughter.java

 //parent class class GrandFather { public void show() { System.out.println('I am grandfather.'); } } //inherits GrandFather properties class Father extends GrandFather { public void show() { System.out.println('I am father.'); } } //inherits Father properties class Son extends Father { public void show() { System.out.println('I am son.'); } } //inherits Father properties public class Daughter extends Father { public void show() { System.out.println('I am a daughter.'); } public static void main(String args[]) { Daughter obj = new Daughter(); obj.show(); } } 

انتاج:

طباعة جافا
 I am daughter. 

الوراثة المتعددة (غير مدعومة)

لا تدعم Java عمليات الوراثة المتعددة بسبب الغموض. على سبيل المثال، فكر في برنامج Java التالي.

جافا التجريبي

 class Wishes { void message() { System.out.println('Best of Luck!!'); } } class Birthday { void message() { System.out.println('Happy Birthday!!'); } } public class Demo extends Wishes, Birthday //considering a scenario { public static void main(String args[]) { Demo obj=new Demo(); //can't decide which classes' message() method will be invoked obj.message(); } } 

الكود أعلاه يعطي خطأ لأن المترجم لا يستطيع تحديد طريقة الرسالة () التي سيتم استدعاؤها. ولهذا السبب، لا تدعم Java عمليات الوراثة المتعددة على مستوى الفصل ولكن يمكن تحقيقها من خلال واجهه المستخدم .