الوراثة في لغة البرمجة جافا هي ميزة مهمة تمكن المطورين من إنشاء تركيبات هرمية للكائنات، حيث يكون للكائنات الفرعية (Subclasses) القدرة على اكتساب الخصائص والسلوكيات من الكائنات الأساسية (Superclasses) التي تمتد منها. وفي مقطع الكود المعروض، يُظهر الاستخدام الصحيح لمفهوم الوراثة في جافا.
للبداية، لنلق نظرة على الكلاس Animal
والكلاس Dog
. يُعرف الكلاس Animal
باعتباره الكلاس الأساسي والذي يمثل الحيوانات بشكل عام. أما الكلاس Dog
فهو يمثل نوعًا معينًا من الحيوانات ويمتد من الكلاس Animal
، وهو يرث جميع الخصائص والسلوكيات من الكلاس الأساسي.
-
برمجة C#: فهم شامل وتطبيقات عملية21/02/2024
-
تحسينات الشيفرة في C#: بسهولة وفاعلية18/02/2024
ثم، يُعرف كائن d
بنوع Dog
ويتم إنشاءه باستخدام الكود static Dog d = new Dog();
. بمجرد تمثيله كنموذج من الكلاس Dog
، فهو يحتوي على جميع الخصائص والسلوكيات التي تمتد إليه من الكلاس Animal
، بما في ذلك أي خصائص أو سلوكيات يتم تعريفها في الكلاس Animal
نفسه.
أما بالنسبة للتعليمة Animal a = d;
، فهي تعني أننا نقوم بإنشاء مرجع من نوع Animal
يشير إلى نفس الكائن الذي يُشير إليه الكائن d
، وهو من نوع Dog
. ومن هنا يكون السؤال: هل الكائن الذي يشير إليه المرجع من نوع Animal
؟ الجواب هو نعم، لأن الكائن نفسه هو من نوع Dog
والذي يمتد من Animal
، وهذا يفسر لماذا تُطبع قيمة true
عند استخدام instanceof
للتحقق من نوع الكائن.
بالنسبة للتعليمة System.out.println(d instanceof Animal);
، فإنها تحدد ما إذا كان الكائن الذي يشير إليه d
من نوع Animal
، والجواب هو نعم. لأن الكائن d
هو من نوع Dog
الذي يمتد من Animal
، وهذا يفسر أيضًا لماذا يُطبع true
.
في النهاية، فإن الوراثة في جافا تسمح بتمثيل العلاقات الهرمية بين الكائنات، وتتيح للكائنات الفرعية اكتساب الخصائص والسلوكيات من الكلاس الأساسي، مما يجعلها أحد الميزات الرئيسية والقوية في اللغة.
المزيد من المعلومات
بالإضافة إلى ما تم ذكره أعلاه، يُظهر المقطع البرمجي المعروض أهمية عدة مفاهيم في الوراثة في جافا، وهي كالتالي:
-
التحقق من نوع الكائن باستخدام
instanceof
: استخدمت التعابيرinstanceof
في المقطع البرمجي للتحقق من نوع الكائنات. هذه التعابير تُستخدم لفحص ما إذا كان الكائن الذي تمت الإشارة إليه ينتمي إلى نوع معين أو إلى أحد الفئات التي يمتد منها. وهنا، يتم تأكيد أن الكائنa
من نوعAnimal
وd
من نوعDog
. -
الاستخدام الصحيح للكائنات الفرعية: من خلال إنشاء متغير
a
من نوعAnimal
وتعيينه ليشير إلى كائن من نوعDog
، يُظهر المقطع البرمجي كيف يمكن للكائنات الفرعية أن تُمثل وتُستخدم بشكل صحيح في البرنامج. -
تمديد الكلاسات وتوريث الخصائص: يُظهر الكود كيف يتم تعريف العلاقة بين الكلاسات
Animal
وDog
باستخدام الكلمة المفتاحيةextends
، حيث يُعرف الكلاسDog
باعتباره كلاسًا يمتد منAnimal
، مما يعني أنه يرث جميع الخصائص والسلوكيات الموجودة فيAnimal
. -
الاستخدام الفعّال للمتغيرات الثابتة والكائنات الثابتة: يُظهر المقطع البرمجي استخدام المتغير الثابت
d
من نوعDog
، وهو متغير يشير إلى كائن من نفس النوع. هذا يُظهر كيف يمكن استخدام الكائنات الثابتة لإنشاء مراجع إلى الكائنات واستخدامها في البرنامج. -
تبادلية الوراثة: يُظهر المقطع البرمجي أن التحقق من نوع الكائنات يعمل بنفس الطريقة سواء كان الكائن من نوع
Animal
أوDog
. هذا يُظهر أن التفاعل بين الكلاسات الأساسية والفرعية قابل للتبادل، مما يسهّل فهم واستخدام الكلاسات المتمددة بشكل صحيح.
باختصار، يُظهر المقطع البرمجي المعروض كيفية استخدام وتنفيذ مفهوم الوراثة في جافا بشكل صحيح، وكيف يمكن للكلاسات الفرعية أن تُمثل وتُستخدم بشكل فعّال داخل البرنامج. يعتبر فهم هذه المفاهيم أساسيًا لتصميم وتنفيذ برامج جافا مرنة وقابلة للتوسع وصيانة.