الأربعاء، 17 أكتوبر 2012

الوراثة في جافا

الوراثة في جافا هي العلاقة بين الفئة المتفوقة و الفئة الفرعية التابعة لها. هذا يعني أنه يمكن استخدام كائن من الفئة فرعية "subclass" مثلما تستخدم اي كائن من الطبقة المتفوقة "superclass". آلية توريث الفئة في جافا تستخدم  لبناء فئات جديدة من الفئات الموجودة. العلاقة الوراثية هي إنتقالية : إذا كانت الفئة x تمتد من الفئة y، فإن الفئة z الممتدة من الفئة x سوف ترث أيضا من الفئة y.

على سبيل المثال يمكن لفئة سيارة "car" ان ترث بعض الخصائص من الفئة العامة لوسيلة نقل "vehicle". هنا نجد أن الفئة الأساسية هي الفئة وسيلة نقل "vehicle"  و الفئة الفرعية هي سيارة "car" التي هي أكثر تحديدا. يجب على الفئة الفرعية استخدام المصطلح "extends" للإشتقاق من الفئة فائقة  التي يجب أن يكون مكتوب في الرأسية الخاصة بتعريف الفئة الفرعية. ترث الفئة فرعية أعضاء من الفئة المتفوقة و هذا يعزز بالتالي إعادة استخدام التعليمات البرمجية. ويمكن للفئة الفرعية نفسها إضافة خصائص و تصرفات خاص بها. الفئة java.lang.Object دائما تكون في أعلى هرم الميراث لأي فئة .


Output 

Volume is : 1000.0

width of MatchBox 1 is 10.0
height of MatchBox 1 is 10.0
depth of MatchBox 1 is 10.0
weight of MatchBox 1 is 10.0
ما هو الغير ممكن عند استخدام توريث الفئة لجافا؟

1. الأعضاء الخاصين "Private members" للطبقة المتفوقة ليسوا قابلين للتوريث من قبل الفئة الفرعية، و لا يمكن الوصول إليهم إلا بشكل غير مباشر.
2. الأعضاء الذين لهم إمكانية الوصول الافتراضي في الفئة المتفوقة هم أيضا ليسوا قابلين للتوريث من قبل الفئات الفرعية لواجهات اخرى ، وهؤلاء الأعضاء لا يمكن الوصول إليهم إلا بأسمائهم البسيطة في الفئات الفرعية ضمن نفس الواجهة و نفس الفئة المتفوقة.
3. بما ان المنشؤون "constructors" وكتل المهيئ "initializer blocks" ليسوا أعضاء في الفئة ، فهم غير  قابلين للتوريث من قبل الفئة الفرعية.
4. فئة فرعية يمكنها فقط تمديد فئة فائقة واحدة


Output 

Constructor of the Super class called

Car number: 10
No of Tyres: 5
accessories: true
Brand: X
Number of Vehicles: 1

الكلمات "this" و "super" 


هاذين الكلمتين الأساسيتين ، "this" و "super" سيقومان بمساعدتك في اسم الحقل أو اسم المنهج الذي تريده. وباستخدام "this" و "super" لديك السيطرة الكاملة على امكانية استدعاء الحقل أو المنهج الموجود في نفس الفئة أو لإستدعائه من الفئة المتفوقة مباشرتا. يتم استخدام الكلمة "this"  كمرجع للكائن الحالي الذي هو مثيل للفئة الحالية. و تستخدم الكلمة "super"  أيضا كمراجع للكائن الحالي، ولكن كما مثيل للفئة الفائقة للفئة الحالية.

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


Output 

Volume is : 1000.0

width of MatchBox 1 is 10.0
height of MatchBox 1 is 10.0
depth of MatchBox 1 is 10.0
weight of MatchBox 1 is 10.0

ليست هناك تعليقات:

إرسال تعليق