الميراث في Java (مع مثال)

ما هو الميراث؟

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

ما هو الميراث في Java?

Java وراثة هي آلية تكتسب فيها فئة ما ملكية فئة أخرى. في Javaعند وجود علاقة "Is-A" بين فئتين، نستخدم الميراث. تسمى الفئة الأصلية بالفئة الفائقة والفئة الموروثة تسمى بالفئة الفرعية. الكلمة الرئيسية extends يتم استخدامه بواسطة الفئة الفرعية لوراثة ميزات الفئة العليا. يعد الوراثة أمرًا مهمًا لأنه يؤدي إلى إمكانية إعادة استخدام الكود.

Java بناء جملة الميراث:

class subClass extends superClass  
{  
   //methods and fields  
} 

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

فيما يلي أنواع مختلفة من الميراث في Java:

  1. الميراث الواحد
  2. وراثة متعددة
  3. الوراثة متعددة المستويات
  4. الوراثة الهرمية
  5. الوراثة الهجينة

1. الميراث الفردي:

في الوراثة الفردية، يقوم فصل واحد بتوسيع فئة أخرى (فئة واحدة فقط).

الميراث الوحيد في Java
الميراث الواحد

في الرسم البياني أعلاه، تمتد الفئة B فقط إلى الفئة A. والفئة A هي فئة فائقة والفئة B هي فئة فرعية.

2. الميراث المتعدد:

الميراث المتعدد هو أحد الميراث في Java الأنواع التي يمتد فيها صنف واحد إلى أكثر من صنف واحد. Java لا يدعم الميراث المتعدد.

الميراث المتعدد في Java
Java وراثة متعددة

وفقًا للرسم البياني أعلاه، فإن الفئة C تمتد إلى الفئة A والفئة B معًا.

3. الميراث متعدد المستويات:

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

الوراثة متعددة المستويات في Java
الوراثة متعددة المستويات

كما هو موضح في الرسم البياني، الفئة C هي فئة فرعية من الفئة B وB هي فئة فرعية من الفئة A.

4. الميراث الهرمي:

في الميراث الهرمي، يتم توريث فئة واحدة من قبل العديد من الفئات الفرعية.


الميراث الهرمي في Java
الوراثة الهرمية

وفقًا للمثال أعلاه، ترث الفئات B وC وD نفس الفئة A.

5. الميراث الهجين:

الميراث الهجين هو أحد أنواع الميراث في Java وهو مزيج من الميراث الفردي والمتعدد.


الوراثة الهجينة
الوراثة الهجينة

وفقًا للمثال أعلاه، يتم توريث جميع الأعضاء العامين والمحميين من الفئة "أ" إلى الفئة "د"، أولاً عبر الفئة "ب" وثانيًا عبر الفئة "ج".

ملحوظة: Java لا يدعم الميراث الهجين/المتعدد

الميراث في Java مثال

هنا مثال على الميراث في Java:


مثال Java وراثة
Java مثال الميراث

class Doctor {
 void Doctor_Details() {
  System.out.println("Doctor Details...");
 }
}

class Surgeon extends Doctor {
 void Surgeon_Details() {
  System.out.println("Surgen Detail...");
 }
}

public class Hospital {
 public static void main(String args[]) {
  Surgeon s = new Surgeon();
  s.Doctor_Details();
  s.Surgeon_Details();
 }
}

سوبر الكلمة الرئيسية

إن الكلمة الرئيسية super تشبه الكلمة الرئيسية "this". يمكن استخدام الكلمة الرئيسية super للوصول إلى أي عنصر بيانات أو طرق للفئة الأصلية. يمكن استخدام الكلمة الرئيسية Super في متغيروالطريقة ومستوى المنشئ.

بناء الجملة:

super.<method-name>();

تحقق أيضا: - هذه الكلمة الرئيسية في Java: ما هو وكيفية استخدامه مع المثال

تعلم الميراث في OOP مع المثال

النظر في نفس التطبيق المصرفي من المثال السابق.

من المفترض أن نفتح نوعين مختلفين من الحسابات، أحدهما للادخار والآخر للحساب الجاري (المعروف أيضًا باسم الحساب الجاري).

الميراث في OOP

دعونا نقارن وندرس كيف يمكننا التعامل مع البرمجة من منظور البرمجة المنظم والموجه للكائنات.

النهج الهيكلي: في البرمجة المنظمة، سوف نقوم بإنشاء وظيفتين –

  1. واحد للانسحاب
  2. والآخر لإجراء الإيداع.

نظرًا لأن عمل هذه الوظائف يظل كما هو عبر الحسابات.

الميراث في OOP

نهج OOP: أثناء استخدام وجه الفتاة نهج البرمجة. سوف نقوم بإنشاء فئتين.

  • ولكل منها تنفيذ وظائف الإيداع والسحب.
  • سيؤدي هذا إلى الاستغناء عن العمل الإضافي.

الميراث في OOP

تغيير الطلب في البرمجيات

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

تغيير الطلب في البرمجيات

النهج الهيكلي: باستخدام النهج الوظيفي، لا بد لي من تعديل وظيفة السحب الخاصة بي، والتي تم اختبارها بالفعل وتحديد خطها الأساسي. وإضافة طريقة مثل أدناه ستهتم بالمتطلبات الجديدة.

تغيير الطلب في البرمجيات

نهج OOP: باستخدام نهج OOP، تحتاج فقط إلى كتابة فئة جديدة مع تنفيذ فريد لوظيفة السحب. لم نلمس أبدًا قطعة التعليمات البرمجية التي تم اختبارها.

تغيير الطلب في البرمجيات

طلب تغيير آخر

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

طلب تغيير متعدد في متطلبات البرامج

النهج الهيكلي: باستخدام النهج الهيكلي، يتعين عليك تغيير جزء رمز الإيداع الذي تم اختباره مرة أخرى.

النهج الهيكلي لطلب التغيير المتعدد في البرمجيات

نهج OOP:ولكن باستخدام نهج موجه للكائنات، ستقوم فقط بإنشاء فئة جديدة بتنفيذها الفريد لطريقة الإيداع (المميزة باللون الأحمر في الصورة أدناه). لذا، على الرغم من أن البرمجة الهيكلية تبدو وكأنها نهج سهل في البداية، إلا أن البرمجة الموجهة للكائنات تفوز على المدى الطويل.

نهج OOP لطلب التغيير المتعدد

مزايا الميراث في OOPs

ولكن يمكن للمرء أن يجادل بأنه في جميع الفئات، لديك أجزاء متكررة من التعليمات البرمجية.

للتغلب على هذه المشكلة، يمكنك إنشاء فئة رئيسية، مثل "account" وتنفيذ نفس وظيفة الإيداع والسحب. وجعل الفئات الفرعية ترث فئة "account". بحيث يكون لديها إمكانية الوصول إلى وظائف السحب والإيداع في فئة الحساب. لا يلزم تنفيذ الوظائف بشكل فردي. هذا هو الميراث في جافا .

مزايا الميراث في OOPs

مزايا الميراث في OOPs