English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
في هذا الدليل، سنتعلم من خلال الأمثلة كيفية تحقيق التعددية في Java، والأنواع المختلفة للتعددية وكيفية تنفيذها في Java.
التعددية هي مفهوم مهم في البرمجة الوجهية للأجسام. إنه يعني ليس هناك شكل واحد فقط. أي أن سلوك نفس الكائن (الدالة، الحرف الحسابي أو الكائن) يمكن أن يختلف بناءً على الحالة المختلفة. على سبيل المثال،
استخدم حرف الحسابية '+' في Java لتنفيذ وظيفتين معينة. عند استخدامه مع الأرقام (الأعداد الصحيحة والأعداد العشرية)، سيتم تنفيذ عملية الجمع.
int a = 5; int b = 6; int sum = a + b; // sum = 11
عند استخدام عمليات الحساب المضافة (+) مع الأنواع النصية، سيتم تنفيذ ربط النصوص. على سبيل المثال،
String firstName = "abc "; String lastName = "xyz"; name = firstName + lastName; // name = abc xyz
يمكن تقسيم التعددية في Java إلى نوعين:
التعددية في الوقت التنفيذ
التباين عند التجميع
في Java، يمكن تحقيق التعددية في الوقت التنفيذ من خلال إعادة كتابة الدوال.
افترض أن تم إنشاء نفس الدالة في الصنف الأب وفرع الصنف. في هذه الحالة، يعتمد الدالة التي سيتم استدعاؤها على الكائن المستخدم لاستدعاء هذه الدالة. على سبيل المثال،
abstract class Animal { public abstract void makeSound(); } class Dog extends Animal { @Override public void makeSound() { System.out.println("Bark bark.."); } } class Cat extends Animal { @Override public void makeSound() { System.out.println("Meow meow..")} } } class Main { public static void main(String[] args) { Dog d1 = new Dog(); d1.makeSound(); Cat c1 = new Cat(); c1.makeSound(); } }
الإخراج:
Bark bark… Meow-meow...
للحصول على معلومات حول كيفية عمل تعطيل الطريقة، يرجى زيارةتعطيل الطريقة في Java.
في هذا المثال، الطريقة makeSound() لها تنفيذ مختلف في فئتين مختلفتين. عند تشغيل البرنامج
تعبير d1.makeSound() سيقوم بتسمية طريقة فئة Dog. هذا لأن d1 هو موضوع فئة Dog.
تعبير c1.makeSound() سيقوم بتسمية طريقة فئة Cat. هذا لأن c1 هو موضوع فئة Cat.
تحديد الطريقة التي سيتم استدعاؤها أثناء تنفيذ البرنامج. لذلك، تعطيل الطريقة هو التباين عند التشغيل.
يمكن تحقيق التباين عند التجميع عن طريق تعطيل الطريقة وتعطيل العملية في Java.
في فئة Java، يمكن إنشاء طريقة بنفس الاسم إذا كانت المعاملات مختلفة. على سبيل المثال،
void func() { ... } void func(int a) { ... } float func(double a) { ... } float func(int a, float b) { ... }
هذا يُدعى تعطيل الطريقة في Java.
لنأخذ تعطيل الطريقة كمثال.
class Demo { public void displayPattern(){ for(int i = 0; i < 10; i++) { System.out.print("*"); } } public void displayPattern(char symbol) { for(int i = 0; i < 10; i++) { System.out.print(symbol); } } } class Main { public static void main(String[] args) { Demo d1 = new Demo(); d1.displayPattern(); System.out.println("\n"); d1.displayPattern('#'); } }
الإخراج:
********** ##########
في البرنامج أعلاه، تم تعطيل طريقة displayPattern().
إذا تم استدعاء هذه الطريقة دون نقل أي معاملات، فإنها ستقوم بإنشاء نموذج * من الأحرف.
إذا تم استدعاء هذه الطريقة عبر نقل حرف كمعامل، فإنها ستقوم بإنشاء نموذج # من الأحرف.
للحصول على معلومات إضافية حول تعطيل الطريقة، يرجى زيارةتحميل الطريقة
في حالة تحميل الطريقة، يجب أن تكون الطريقة في فئات مختلفة. ومع ذلك، في حالة تحميل الطريقة، يجب أن تكون الطريقة في نفس الفئة.
تُنفذ تحميل الطريقة في وقت التنفيذ، بينما تُنفذ تحميل الطريقة في وقت التجميع.
بعض العملاء في Java يعملون بشكل مختلف على الأنواع المختلفة. على سبيل المثال،
تم تحميل عمليات الحساب المضافة (+) لتنفيذ عملية الإضافة الرقمية وربط النصوص.
& | و ! لتحميل العمليات المنطقية والعمليات الثنائية.
لنرى كيف يتم تحميل العمل في Java.
استخدم عمليات الحساب المضافة (+) في Java لتنفيذ وظيفتين معينة. عند استخدامها مع الأرقام (الأعداد الصحيحة والأعداد العشرية)، سيتم تنفيذ عملية الإضافة. على سبيل المثال،
int a = 5; int b = 6; int sum = a + b; // sum = 11
عند استخدام عمليات الحساب المضافة (+) مع الأنواع النصية، سيتم تنفيذ ربط النصوص. على سبيل المثال،
String firstName = "abc "; String lastName = "xyz"; name = firstName + lastName; // name = abc xyz
في لغات مثل C++، يمكننا تعريف العمل على العمليات المختلفة. ولكن Java لا تدعم تحميل العمل على العملاء المخصصة.
المتعددة الاشكال يسمح لنا بإنشاء شيفرة متسقة. على سبيل المثال،
افترض أننا نريد رسم دائرة ومربع. من أجل ذلك، يمكننا إنشاء فئة Polygon، وتتولد منها كلاً من الكائنات الفرعية Circle و square. في هذه الحالة، من الضروري إنشاء طريقة render() بنفس الاسم في كلاً من الكائنات الفرعية، بدلاً من إنشاء طرق بأسامية مختلفة.
في مثالنا على تحميل الطريقة، نستخدم نفس اسم الطريقة displayPattern() لعرض نمطين مختلفين للحفاظ على التسلسل.
طريقة print() في Java هي مثال على متعددة الاشكال (تحميل الطريقة) أيضًا. تستخدم نفس الطريقة للطباعة قيم مختلفة، مثل char و int و String وما إلى ذلك. يمكننا أيضًا استخدام نفس الطريقة للطباعة عدة قيم في وقت واحد.
في Java،م変وبيات الكائن (مثل المتغيرات المثبتة) تمثل سلوك المتغيرات المتعددة الاشكال. لأن متغيرات الكائن في الفئة يمكنها مرجع الكائنات الخاصة بها وكائنات الفئات الفرعية. على سبيل المثال،
class Animal { public void displayInfo() { System.out.println("I am an animal."); } } class Dog extends Animal { @Override public void displayInfo() { System.out.println("أنا كلب."); } } class Main { public static void main(String[] args) { //ت声明 متغير فئة Animal a1 Animal a1; //إنشاء عنصر فئة Animal a1 = new Animal(); a1.displayInfo(); //إنشاء عنصر فئة Dog a1 = new Dog(); a1.displayInfo(); } }
الإخراج:
أنا حيوان. أنا كلب.
في المثال السابق، قمنا بإنشاء متغير a1 من فئة Animal. هنا، a1 هو متغير متعدد الأشكال.
لأنه،
في جملة a1 = new Animal()، يشير a1 إلى عنصر فئة Animal.
في جملة a1 = new Dog()، يشير a1 إلى عنصر فئة Dog.
هذا مثال على التحويل الصعودي في Java. للحصول على معلومات إضافية، يرجى زيارةتحويل صعودي وسقوطي في Java.