جافا هي لغة مكتوبة بقوة.
يتم تطبيق التحويلات القياسية والترقيات التلقائية على الأنواع البدائية.
يتم فرض توافق النوع بصرامة.
عادة، لا يمكن للمتغير المرجعي من فئة واحدة أن يشير إلى كائن من فئة أخرى.
حتى لو كانت الفئتان X وY متماثلتان من الناحية الهيكلية، فمن غير الممكن تعيين مرجع X لكائن Y لأن الأنواع مختلفة.
بشكل عام، يمكن للمتغير المرجعي للكائن أن يشير فقط إلى الكائنات من نوعه.
الاستثناء لفرض النوع هو أن المتغير المرجعي للفئة الفائقة يمكن أن يشير إلى كائنات من أي فئة فرعية مشتقة من تلك الفئة الفائقة.
نظرًا لأن Y مشتق من X، يُسمح لـ x2 بتلقي مرجع إلى كائن Y.
يحدد نوع المتغير المرجعي، وليس نوع الكائن الذي يشير إليه، الأعضاء الذين يمكن الوصول إليهم.
عندما يتم تعيين مرجع إلى كائن فئة فرعية لمتغير فئة فائقة، فمن الممكن فقط الوصول إلى الأعضاء المحددين بواسطة الفئة الفائقة.
في المثال، لا يمكن لـ x2 الوصول إلى العضو b من Y، حيث أن الفئة X ليست على علم بالأعضاء المضافين بواسطة الفئة الفرعية.
مراجع الفئات الفرعية المخصصة لمتغيرات الفئة الفائقة شائعة، خاصة عند استدعاء المنشئين في التسلسل الهرمي للفئات.
يمكن أن تستفيد الفئات الفرعية من المنشئات التي تأخذ كائنًا من الفئة الفائقة كمعلمة، مما يسمح بإنشاء نسخ من الكائنات.
في هذا البرنامج، يتم إنشاء t2 من t1 وبالتالي فهو متطابق.
الانتباه في منشئ المثلث هذا:
// إنشاء كائن من كائن آخر.
مثلث (مثلث أوب) {
سوبر (أوب)؛ // يمرر الكائن إلى مُنشئ TwoDShape
النمط = ob.style;
يستقبل كائنًا من النوع Triangle ويمرره (من خلال super) إلى مُنشئ TwoDShape:
// يبني كائنًا من كائن آخر.
TwoDShape(TwoDShape ob) {
العرض = ob.width;
الارتفاع = ob.height;
يتوقع مُنشئ TwoDShape() تلقي كائن من النوع TwoDShape.
يقوم مُنشئ الفئة الفرعية Triangle() بتمرير كائن من النوع Triangle.
يعمل هذا لأن مرجعًا من فئة فائقة، مثل TwoDShape، يمكنه الإشارة إلى كائن من فئة فرعية، مثل Triangle.
من المقبول تمرير مرجع من كائن من فئة مشتقة إلى مُنشئ الفئة الفائقة.
يقوم منشئ الطبقة الفائقة، TwoDShape()، بتهيئة الأعضاء الذين ينتمون إلى فئة TwoDShape فقط، بغض النظر عن الأعضاء الإضافيين في فئة Triangle الفرعية.
تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.
Copyright© 2022 湘ICP备2022001581号-3