الانتقال إلى المحتوى
View in the app

A better way to browse. Learn more.

مجموعة مستخدمي أوراكل العربية

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

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

Featured Replies

بتاريخ:




من مفاهيم الـ opp: الوراثة - تعدد الأشكال .


المفتاح الرئيسي للبرمجة الغرضية التوجه هو الوراثة:أي إعادة خلق صفوف جديدة(ابن) من صفوف قديمة(أباء) ,لها نفس الخصائص الموجودة في الصف القديم وخصائص جديدة أخرى خاصة بالصف الابن.
يطلق على الصف الأب اسمsuperclass
يطلق على الصف الابن اسم subclass
تتم الوراثة عن طريق الكلمة extends.
الوراثة في الجافا وراثة أحادية وليس هناك وراثة متعددة الأشكال (يعني لكل صف ابن أب مباشر واحد).
ملاحظات :
أولاً:
sub object is a super object
يعني أن أي غرض من الصف الابن هو غرض من الصف الأب والعكس غير صحيح أي:
super object is not a sub object
ثانياُ:الصف الابن يمكنه الوصول إلى أعضاء الأب إذا كان من النوع public
الصف الابن لا يمكنه الوصول لأعضاء الأب إذا كانت من النوع private.
أما إذا كانت أعضاء الأب من النوع package access يستطيع الابن الوصول إليه إذا كان الابن عضو في نفس الـ package .
أما إذا كانت protected :يمكن الوصول إليها من قبل الصف الأب و الصف الابن والصفوف الموجودة في حزمة الصف الأب.
ثالثاُ:
مفهوم الـ over riding :أي إعادة صياغة الطريقة الموجودة في الصف الأب داخل الصف الابن والسبب في ذلك أنه قد تكون الصيغة في الطريقة الأب غير مناسبة للصف الابن.
رابعاُ:
المعامل super يشير إلى الصف الأب للصف الحالي .
خامساُ:
مفهوم الـ is a : تعني الوراثة الكاملة .
مفهوم الـ has a :تمثل استدعاء الصف ومن ثم استخدام غرض من الصف المستدعى ضمن الصف الذي نكتبه .
سادساُ:
يمكن تحويل الغرض من الصف الأب الى الغرض من الصف الابن وذلك عن طريق الـ casting القسري , وإذا لم نضع الـ casting سينتج لدينا استثناء أي :exeption .
سابعاُ:
الصف الابن لا يرث من الصف الأب الباني حتى نضع في باني الابن المعامل super. أي نفذ باني الأب ,إذا لم نضع التعليمة super داخل الباني الابن سيتم استدعاء الباني الافتراضي للأب( الذي يهيئ المتحولات بقيم صفرية للأولية ,false للبوليانية ,null للمرجعية ) وإذا لم يكن هناك باني افتراضي للأب سيقوم البن باستدعاء الباني الافتراضي للصف object (الأب الروحي للجافا).

*- الطرق والصفوف من النوع final :
1- الصف من نوع final لا يمكن وراثتها أبداُ (لا يمكن أن يكون أب لأحد ).
2- الصف من النوع الغير final : إذا كان فيه متحول من النوع final لا يمكن عمل الـ over riding عليه في الصف الابن .2- الطرق من النوع static :هي فعلياُ تعتبر final .
الطرق من النوع private : هي أصلاُ لا تنزل مع الصف الابن وبالتالي هي final .
3- إذا كان الصف من النوع final فإن جميع الطرق فيه من النوع final .
5- تسريع الترجمة: عملية الـ call تأخذ زمن أطول في الترجمة من كتابة الكود بذاته . فالمترجم عندما يرى استدعاء للطريقة من النوع final يضع بدلاُ عنه الكود بذاته وذلك لأنه لا يتغير .

*- finalizer:
كيف نتعامل مع sub و super عند استدعاء الـ finalizer (هو طريقة موجودة في الصف object فقبل تحرير الذاكرة من قبل ال gc فإنه يتم استدعاء الطريقة finalizer )
إذا لم نضع أي inalizer وكان لدينا وراثة متعددة فليس هناك مشكلة.
وإذا وضعنا ال finalizer في أحد الصفوف فإن ابنه يجب أن يأخذ الـ finalizer من أبوه ونضع في الابن كما يلي :
(super.finalizer)

============================

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

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

زائر
أضف رد على هذا الموضوع...

برجاء الإنتباه

بإستخدامك للموقع فأنت تتعهد بالموافقة على هذه البنود: سياسة الخصوصية

Account

Navigation

البحث

إعداد إشعارات المتصفح الفورية

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.