توضح هذه المقالة استخدام تعدد الأشكال في Java مع أمثلة. شاركها مع الجميع لتكون مرجعا لك. التحليل المحدد هو كما يلي:
تعدد الأشكال هو السمة الأساسية للغات البرمجة الشيئية. يعد التغليف والميراث أمرًا بسيطًا نسبيًا، لذا سأقدم ملاحظة صغيرة فقط حول تعدد الأشكال هنا. . .
1. ما هو تعدد الأشكال؟
تعدد الأشكال يعني أن الكائن يمكن أن يكون له خصائص متعددة ويمكن أن يظهر حالات مختلفة في ظل ظروف محددة للاستجابة لخصائص وأساليب مختلفة. في Java، يشير التنفيذ متعدد الأشكال إلى استخدام نفس واجهة التنفيذ لتنفيذ مثيلات كائن مختلفة.
على سبيل المثال، نحدد فئة الأصل، ثم نحدد طريقة getName() لإرجاع سلسلة، ونحدد طريقة العضو doSomething(Parent obj) التي تكون معلمتها الرسمية هي نوع الأصل، ونستدعي obj.getName() في هذه الطريقة. ثم حدد فئتين A وB، وكلاهما يرثان من الفئة الأصل، وتجاوز طريقة getName() في الفئة الفرعية. أخيرًا، قم بإنشاء كائن objP من الفئة الأصل في الطريقة الرئيسية، واستدعاء الأسلوب objP.doSomething() وتمرير مراجع الفئتين A وB. مراقبة الإخراج.
class Parent { اسم السلسلة الخاصة = "الأصل"؛ public String getName() { return this.name } public void doSomething(Parent obj) { // اسم فئة الإخراج System.out.println(obj.getName() }); public static void main(String[] args) { Parent objP = new Parent(); عند تمرير مرجع إلى A، تسمى طريقة getName للفئة A objP.doSomething(new B()); // عند تمرير مرجع إلى B، يتم استدعاء طريقة getName للفئة B} } class A Extends Parent { اسم السلسلة الخاصة = "الفئة أ"؛ //@ أعد كتابة طريقة getName () public String getName() { return this.name } } class B Extends Parent { public String name = "class B"; //@Rewrite getName () الطريقة العامة لسلسلة getName () { إرجاع هذا الاسم } }
يمكن أن نرى أن طريقة doSomething للفئة الأصلية تستدعي بشكل متعدد الأشكال طريقة getName للكائن الذي مررناه، بدلاً من طريقة getName للفئة الأصلية نفسها.
2. واجهة في جافا
الواجهة في Java هي إعلان لسلسلة من الأساليب. تحتوي الواجهة فقط على خصائص الأساليب، وليس تنفيذ الأساليب. يمكن تنفيذ هذه الأساليب من مكان آخر من خلال فئات محددة. في Java، يتم استخدام واجهة الكلمات الرئيسية للإعلان عن واجهة.
أمثلة على تعدد الأشكال باستخدام الواجهات:
اسم الواجهة { // الإعلان فقط، وليس التنفيذ public String getName(); } class A Implements Name { Private String name = "class A"; // تنفيذ طريقة getName public String getName() { return name } } class B بتنفيذ الاسم { اسم السلسلة الخاصة = "الفئة ب" // تنفيذ طريقة getName public String getName() { return name } public static void main(String[] args) { Name obj = new A(); System.out.println(obj.getName());
كما ترون، تتم طباعة اسم الفئة أ، الفئة أ.
ملاحظة: إذا لم يقم الفصل بتنفيذ كافة الأساليب في الواجهة، فيجب إعلان الفصل مجردًا. لا تسمح الفئة المجردة بإنشاء مثيل للكائنات.
آمل أن تكون هذه المقالة مفيدة لبرمجة جافا للجميع.