ما هو Upcasting و Downcasting في جافا؟ شرح بسيط

نشرت: 2021-01-22

جدول المحتويات

Upcasting و Downcasting في جافا

يشير أسلوب Typecasting في Java إلى الإجراء الذي يتضمن تحويل نوع بيانات إلى آخر. يمكن القيام بذلك تلقائيًا ويدويًا. بينما يتعين على المبرمج إجراء التحويل اليدوي من تلقاء نفسه ، يتم استخدام مترجم للعملية التلقائية. يعتبر التقليل من القيمة و البث المباشر نوعين من أنواع أنواع الكائنات.

الكائنات الفرعية والأصلية نوعان مميزان من الكائنات. الآن ، هناك طريقتان يمكن من خلالهما تهيئة الكائنات ، وبالتالي ورث الخصائص التي يمتلكها الأطفال والفصول الرئيسية. تشمل هذه الطرق:

  • الطفل ج = طفل جديد (): يصل إلى جميع الأعضاء القادمين تحت فصول الأطفال والوالدين
  • الأصل p = new Child (): الوصول إلى أعضاء الفصل الأصلي فقط ، بالإضافة إلى الطرق التي تم تجاوزها في الفصل الفرعي

بشكل أساسي ، يُعرف اختيار النوع من الوالدين إلى الطفل باسم Upcasting ، بينما يُشار إلى اختيار نوع من طفل إلى آخر باسم Downcasting.

يتم استخدام نظام التلبيس للتأكد من أن المتغيرات تتم معالجتها بواسطة دالة بدقة أم لا. في حين أن التخفيض غير ممكن ضمنيًا ، يمكن للمرء إجراء التنبيه الصريح والضمني.

يُعد كل من التقليل من السقوط والتلفيق من العناصر المهمة لجافا وتمكن الأشخاص من تطوير برامج معقدة باستخدام بناء جملة بسيط. لديهم أيضًا بعض المزايا الرائعة مثل تجميع كائنات متنوعة معًا أو تعدد الأشكال.

تعلم دورات تطوير البرمجيات عبر الإنترنت من أفضل الجامعات في العالم. اربح برامج PG التنفيذية أو برامج الشهادات المتقدمة أو برامج الماجستير لتتبع حياتك المهنية بشكل سريع.

منقط

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

يمكن أن يساعد المثال التالي في توفير فهم أفضل للعملية.

مثال: هناك فئة حيوانية تتميز بفئات متنوعة من الحيوانات ، من بينها الأسماك. الآن ، بافتراض أن فئة الحيوانات ممتدة بفئة الأسماك ، ستكون هناك طريقتان للميراث. الوراثة هي أحد الجوانب الرئيسية في البرمجة الشيئية أو OOP والتي تسمح لفئة ما أن ترث ميزات فئة أخرى. هذا يعني أن الفئة المشتقة هي مجموعة شاملة للفئة الأساسية. قد يكون هناك طرق مميزة هنا أكثر من الفئة الأساسية. أثناء الاتجاه المفاجئ ، الشيء الوحيد الذي قد يحدث مع واجهة الفصل هو أنه يمكن أن ينتهي الأمر بفقدان الأساليب بدلاً من اكتسابها. نتيجة لذلك ، يتيح المترجم إمكانية البث بدون أي نوع من الرموز الخاصة أو القوالب الصريحة.

التكوين مقابل الميراث

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

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

الكآبة

يعتبر Downcasting شكلًا آخر من أشكال صب نوع الكائن ويستخدم في تعيين كائن مرجع الفئة الفرعية للفئة الأصلية غير المسموح بها في Java. الكآبة ليست صعبة الفهم. على سبيل المثال ، إذا كانت هناك فئة أساسية وفئة مشتقة بشكل غير مباشر أو غير مباشر من الفئة الأساسية ، فعندئذٍ في أي وقت ينتقل كائن من نوع الفئة الأساسية إلى النوع الملصق في فئة مشتقة ، يشار إليه باسم downcast. وبالتالي ، وفقًا للتخفيض ، يمكن للمرء أن ينزل في مخطط الوراثة من خلال السعي لأخذ كائن من الفئة الأساسية ثم تحويله إلى نوع فئة مشتق. ومع ذلك ، من المهم ملاحظة أنه بناءً على الكود المكتوب ، قد يكون التقليل من القيمة منطقيًا وقد لا يكون كذلك.

نظرًا لأن الأشخاص ينفذون نظام خفض البيانات ، فلن يواجهوا أي نوع من أخطاء المترجم. ومع ذلك ، فقد يواجهون java.lang.ClassCastException ، وهو استثناء لوقت التشغيل. إذن السؤال الذي يطرح نفسه الآن إذا كان التقليل من شأنه غير ممكن في جافا ، فلماذا يقوم الناس بذلك؟ ببساطة ، لا يمكن استخدام تقنية downcasting إلا في مواقف معينة حيث ينتمي الكائن المشار إليه بواسطة الفئة الرئيسية إلى فئة فرعية.

يمكن أن يكون التقليل من القيمة مفيدًا للغاية عند مقارنة كائن بآخر.

للتحقق مما إذا كانت عملية downcasting صالحة أم لا ، يمكن للمرء تشغيلها

يُمكّن نظام getClass () المطورين من فهم فئة الكائن الذي يتم تمريره ، ومقارنته لاحقًا بالفئة الحالية. في حالة عدم تساويهم ، لن يكون التخفيض صحيحًا وستكون تجربة هذه العملية غير مجدية. يستخدم مفهوم downcasting بشكل رئيسي صب الأنواع الفائقة إلى الأنواع الفرعية. عادة ما تتم عملية الصب هذه بطريقة صريحة. هذا يعني بشكل أساسي أن الأنواع الأكبر حجمًا مصنوعة لتناسب بشكل صريح الأنواع ذات الأحجام الصغيرة.

Upcasting مقابل Downcasting

منقط و. التخفيض له بعض الاختلافات الخاصة جدا. تم التأكيد بإيجاز على بعضها في المؤشرات التالية:

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

خاتمة

نادرًا ما يتم استخدام Upcasting في Java. في معظم الحالات ، يستخدمه الأشخاص عندما يتعين عليهم تطوير رمز يتعامل فقط مع فئة الوالدين. عندما يتعلق الأمر بتطوير رمز يوفر الوصول إلى سلوك الفصل الدراسي ، يميل أسلوب التقليل إلى الاستخدام.

إذا كنت ترغب في تعلم Java والحصول على شهادة في الحوسبة السحابية أيضًا ، upGrad يقدم برنامج شهادة متقدم في الحوسبة السحابية . تم تصميم الدورة التدريبية عبر الإنترنت التي تبلغ مدتها 7.5 شهرًا خصيصًا للمهنيين العاملين لمساعدتهم على الدخول في أدوار الحوسبة السحابية.

كن مطورًا للمكدس الكامل

تقدم الآن للحصول على درجة الماجستير في علوم الكمبيوتر من LIVERPOOL JOHN MOORES