أنواع تعدد الأشكال في جافا [تعدد الأشكال الثابت والديناميكي مع أمثلة]

نشرت: 2021-06-18

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

ما هو تعدد الأشكال في جافا؟

يعد تعدد الأشكال أحد المفاهيم المهمة في البرمجة الشيئية (OOP) ، مما يعني أنه يمكن تنفيذ إجراء واحد بطرق مختلفة. وهي مشتقة من الكلمات اليونانية: poly and morphs التي تعني العديد من الأشكال. توجد الأشكال المختلفة عندما ترتبط من خلال الميراث.

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

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

يمكن تحقيق تعدد الأشكال في Java من خلال ثلاث طرق:

تجاوز الطريقة: إذا كانت الفئة الفائقة والفئة الفرعية تتكونان من نفس الطريقة ، فإن تجاوز الطريقة يشير إلى عملية تجاوز الطريقة في الطبقة الفائقة بالطريقة في الفئة الفرعية. نتيجة لذلك ، سيتم استخدام نفس الطريقة في ظروف مختلفة تؤدي عمليات مختلفة.

مخرجات البرنامج:

لغة برمجة جافا

لغة إنجليزية مشتركة

  1. أسلوب التحميل الزائد: يشير أسلوب التحميل الزائد إلى عملية إنشاء طرق بنفس الاسم ولكن بمعلمات مختلفة. تتضمن الأمثلة: void func () {…} ، void func (int a) {…} ، float func (double a) {…} ، float func (int a ، float b) {…}.

انتاج |

**********

##########

  1. التحميل الزائد على المشغل : التحميل الزائد على المشغل هو مفهوم في Java حيث يتصرف المشغل بشكل مختلف مع معاملات مختلفة. الامثله تشمل:
  • يمكن استخدام عامل التشغيل "+" في الجمع الرقمي وسلسلة السلاسل.
الجمع العددي سلسلة السلسلة
كثافة العمليات أ = 5 ؛

كثافة العمليات ب = 6 ؛

مجموع int = a + b ؛ // الخرج = 11

السلسلة الأولى = "Python" ؛

السلسلة الثانية = "البرمجة" ؛

الاسم = الأول + الثاني ؛ // الإخراج = برمجة بايثون

  • عوامل التشغيل & ، | ، و! يمكن استخدامها في التحميل الزائد المنطقي والبت.

أنواع تعدد الأشكال في جافا

تركز البرمجة الشيئية على أربعة مفاهيم أساسية مثل التجريد والتغليف والوراثة وتعدد الأشكال. تعدد الأشكال هو القدرة على معالجة الأشياء بشكل مختلف على أساس فئتها وأنواع بياناتها.

هناك نوعان من تعدد الأشكال في جافا : تجميع تعدد الأشكال الزمني وتشغيل تعدد الأشكال الزمني في جافا . يشار أيضًا إلى تعدد الأشكال في جافا هذا باسم تعدد الأشكال الثابت وتعدد الأشكال الديناميكي.

1. تعدد الأشكال الثابت (أو تعدد الأشكال وقت التجميع)

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

  • يجب أن يختلف رقم المعلمات.
  • يجب أن تكون أنواع المعلمات مختلفة.
  • ترتيب مختلف للمعلمات. على سبيل المثال ، إذا قبلت عملية سلسلة نصية وطويلة ، في حين أن الطريقة الأخرى تقبل سلسلة طويلة وسلسلة. ومع ذلك ، فإن هذا النوع من الأوامر يجعل من الصعب على واجهة برمجة التطبيقات (API) فهمها.

بسبب الاختلاف في المعلمات ، كل طريقة لها توقيع مختلف. مترجم جافا لديه فكرة عن الطريقة التي يتم استدعاؤها.

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

مثال على تعدد الأشكال الثابت

إحدى الطرق التي تدعم Java من خلالها تعدد الأشكال الثابت هي طريقة التحميل الزائد. يظهر أدناه مثال يوضح حالة التحميل الزائد للطريقة في تعدد الأشكال الثابت:

مثال:

فئة SimpleCalculator

{

int add (int a، int b)

{

إرجاع أ + ب ؛

}

int add (int a، int b، int c)

{

إرجاع أ + ب + ج ؛

}

}

فئة عامة تجريبي

{

الرئيسية العامة الثابتة الفراغ (سلاسل سلسلة [])

{

SimpleCalculator obj = new SimpleCalculator () ؛

System.out.println (obj.add (25 ، 25)) ؛

System.out.println (obj.add (25 ، 25 ، 30)) ؛

}

}

مخرجات البرنامج

50

80

2. تعدد الأشكال الديناميكي (أو تشغيل تعدد الأشكال الزمني في Java)

في هذا الشكل من تعدد الأشكال في جافا ، لا يحدد المترجم الطريقة التي سيتم تنفيذها. إنها Java Virtual Machine (JVM) التي تنفذ العملية في وقت التشغيل. يشير تعدد الأشكال الديناميكي إلى العملية التي يتم فيها حل استدعاء عملية تم تجاوزها في وقت التشغيل. المتغير المرجعي للفئة الممتازة يستدعي الطريقة المتجاوزة. توفر الطرق التي يتم تنفيذها بواسطة كل من الفئة الفرعية والفئة الفائقة وظائف مختلفة أثناء مشاركة نفس الاسم.

إن فهم عملية Upcasting أمر بالغ الأهمية قبل فهم مفهوم تعدد أشكال وقت التشغيل. يشير Upcasting إلى العملية التي تتم فيها الإشارة إلى كائن من الفئة الفرعية بواسطة متغير مرجعي من الطبقة الفائقة. تعرف على تعدد الأشكال في PHP.

مثال على تعدد الأشكال الديناميكي (أو وقت التشغيل)

مثال 1:

يتم إنشاء فئتين: Bike و Splendor ، وفئة Splendor توسع فئة الدراجة متجاوزة طريقة التشغيل (). يتم استدعاء طريقة run () بواسطة المتغير المرجعي للفئة الأصلية. نظرًا لأن طريقة الفئة الفرعية تتجاوز طريقة الفئة الأصلية ؛ يتم استدعاء أسلوب الفئة الفرعية في وقت التشغيل.

البرنامج

فئة الدراجة {

تشغيل باطل () {System.out.println ("قيد التشغيل") ؛}

}

فئة روعة تمتد الدراجة {

void run () {System.out.println ("المشي بأمان لمسافة 30 كم") ؛}

عامة ثابتة الرئيسي الباطل (سلاسل السلسلة []) {

الدراجة ب = روعة جديدة () ؛ // upcasting

b.run () ؛

}

}

الإخراج: المشي بأمان 60 كم

مثال 2

يتم إنشاء فئتين مع أسماء "ABC" و "XYZ" حيث XYZ هي فئة فرعية و ABC هي فئة أصل. هنا ، تم تجاوز طريقة myMethod () الخاصة بالفئة الأصلية بواسطة الفصل الفرعي. يتم تعيين كائن الفئة الفرعية إلى مرجع الفئة الأصل.

برنامج:

فئة ABC {

myMethod () باطلة عامة {

System.out.println ("الطريقة المتجاوزة") ؛

}

}

الفئة العامة XYZ تمتد إلى ABC {

myMethod () باطلة عامة {

System.out.println ("طريقة تجاوز") ؛

}

العامة الثابتة الفراغ الرئيسي (سلاسل سلسلة []) {

ABC obj = XYZ جديد () ؛

طريقة obj.my () ،

}

}

انتاج |

طريقة التجاوز

خاتمة

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

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

إذا كنت ترغب في معرفة المزيد عن تكنولوجيا البرمجيات ، وتطويرها ، والآلية الكامنة وراءها ، يمكنك التحقق من الدورة التدريبية Executive PG Program in Software Development - التخصص في Full Stack Development الذي تقدمه upGrad. دورة التخصص عبارة عن برنامج عبر الإنترنت مدته 23 أسبوعًا يقدم أكثر من 300 دراسة حالة لتعزيز معرفتك والأدوات المتاحة ولغة البرمجة لتعزيز مهاراتك العملية. إذا كان لديك المزيد من الاستفسارات المتعلقة بالدورة ، فأرسل لنا رسالة. سيقوم فريقنا بالاتصال بك.

خطط لوظيفتك في تطوير البرمجيات الآن.

تقدم لبرنامج Executive PG في تطوير البرمجيات من IIIT-B