في القسم السابق، رأينا طريقة تعريف الفئات المشتقة باستخدام الميراث العام. هناك في الواقع ثلاث طرق هنا، وهي الميراث العام ، والميراث الخاص ، والميراث المحمي .
يكمن الاختلاف الرئيسي بين طرق الميراث المختلفة في التغييرات في حقوق الوصول للأعضاء ذوي حقوق الوصول المختلفة في الفئة الأساسية في الفئة المشتقة. قدم واحدا تلو الآخر أدناه.
1. الميراث العام:
في وضع الميراث العام، خصائصه هي كما يلي:
(1) لا يزال الأعضاء العامون في الفئة الأساسية أعضاءً عامًا في الفئة المشتقة. بالطبع، يمكن الوصول إلى كل من وظائف الأعضاء وكائنات الفئة المشتقة في الفئة المشتقة.
(2) لا يمكن الوصول إلى الأعضاء الخاصين في الفئة الأساسية بواسطة أعضاء الفئة المشتقة أو كائنات الفئة المشتقة.
(3) لا يزال الأعضاء المحميون في الفئة الأساسية من الأنواع المحمية في الفئة المشتقة ويمكن الوصول إليهم من خلال وظائف الأعضاء في الفئة المشتقة، ولكن لا يمكن الوصول إلى كائنات الفئة المشتقة.
2. الميراث الخاص:
في حالة الميراث الخاص، فإن حقوق الوصول للأعضاء الثلاثة من النوع العام والنوع الخاص والنوع المحمي هي كما يلي:
(1) تصبح الأنواع العامة والمحمية للفئة الأساسية، بعد استيعابها بواسطة الميراث الخاص للفئة المشتقة، أنواعًا خاصة للفئة المشتقة، أي أنه يمكن الوصول إليها في وظائف أعضاء الفئة ولا يمكن الوصول إليها يمكن الوصول إليها خارج الفصل.
(2) لا يمكن الوصول إلى الأعضاء الخاصين في الفئة الأساسية في الفئة المشتقة، سواء داخل الفئة أو خارجها.
يمكننا أن نرى أنه إذا كان اشتقاقًا خاصًا، فلن يعد من الممكن استخدام الأعضاء الخاصين في الفئة الأساسية في الفئة المشتقة أو حتى الفئة الفرعية المشتقة، وليس لها أي معنى، لذا فإن هذا النوع من الاستخدام نادر نسبيًا.
3. حماية الميراث:
يتميز وراثة النوع المحمي بالخصائص التالية:
(1) الأعضاء العامون وأعضاء النوع المحمي من الفئة الأساسية هم أعضاء محميون في الفئة المشتقة.
(2) لا يمكن الوصول مباشرة إلى الأعضاء الخاصين في الفئة الأساسية في الفئة المشتقة.
يمكن ملاحظة أن وظائف الأعضاء في الفئة المشتقة يمكنها الوصول إلى الأعضاء العامين والأعضاء المحميين في الفئة الأساسية، ولكن لا يمكن الوصول إليها خارج الفئة من خلال كائن الفئة المشتقة. وبالمثل، لا يمكن الوصول إلى الأعضاء الخاصين في الفئة الأساسية من خلال وظائف الأعضاء في الفئة المشتقة أو من خلال كائنات الفئة.
ما يلي لا يزال يأخذ رمز برنامج الساعة والمنبه كمثال لتجربة أنواع مختلفة من مشكلات الوصول المستمدة من أذونات مختلفة في الفئة الأساسية. بالنسبة للأنواع العامة، يمكن استدعاؤها في أساليب الأعضاء للفئات المشتقة أو خارج الفئة، حيث يتم تشغيل التجميع بدون أخطاء على النحو التالي:
لكن بالنسبة للأعضاء الخاصين، نحاول إضافة سطر من التعليمات البرمجية، انظر السطر 41. في وظيفة العضو للفئة المشتقة، يتم تعيين المتغير H الممتص من الفئة الأساسية، ويتم الإبلاغ عن خطأ أثناء التجميع، انظر المربع الأحمر والموجه أدناه:
يمكنك رؤية رسالة الخطأ "H هو نوع خاص".
بالنسبة للأنواع المحمية، نحاول تحديد متغير النوع المحمي w في الفئة الأساسية، ونحاول تعيينه واستخدامه في طريقة الفئة المشتقة الموروثة بشكل عام. يمكنك رؤية الموقف في الصورة أدناه، والتي يمكن الوصول إليها بالكامل. كما هو موضح أدناه:
بالنسبة للميراث الخاص، يتم الوصول إلى أعضاء الأنواع العامة خارج الفصل:
يمكنك التجربة بنفسك للتحقق من وصول أنواع مختلفة من الأعضاء بموجب الميراث العام.
وبعد الدراسة والتجربة يمكن تلخيص ذلك فيما يلي:
1. لا يمكن الوصول إلى الأعضاء الخاصين في الفئة الأساسية بواسطة وظائف الأعضاء داخل الفئة المشتقة أو خارجها، بغض النظر عن الأذونات المشتقة.
2. الميراث الخاص، بغض النظر عن النوع الأصلي للفئة الأساسية، لا يمكن الوصول إليه من خلال وظائف الأعضاء خارج الفئة المشتقة.
3. حقوق الوصول للأعضاء التي امتصتها الفئة المشتقة من الفئة الأساسية هي أدنى حقوق الوصول في الفئة الأساسية والحقوق المشتقة وقت الاشتقاق.
واستنادا إلى مجموعة الأذونات المشتقة، والأذونات المحددة في الفئة الأساسية، وأوقات الوصول المختلفة داخل الفئة المشتقة وخارج الفئة، يتم إدراج الجدول التالي:
الميراث العام | الميراث المحمي | الميراث الخاص | ||||
زيارة الموقع | داخل الفصل | خارج الصف | داخل الفصل | خارج الصف | داخل الفصل | خارج الصف |
الأعضاء العموميين | يستطيع | يستطيع | يستطيع | لا أستطيع | يستطيع | لا أستطيع |
حماية الأعضاء | يستطيع | لا أستطيع | يستطيع | لا أستطيع | يستطيع | لا أستطيع |
عضو خاص | لا أستطيع | لا أستطيع | لا أستطيع | لا أستطيع | لا أستطيع | لا أستطيع |