English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

تعليمات أساسيات Java

Java Control Flow

Java Array

Java Object-Oriented (I)

Java Object-Oriented (II)

Java Object-Oriented (III)

معالجة الاستثناءات في Java

Java List

Java Queue (Queue)

Java Map Collection

Java Set Collection

Java Input/Output (I/O)

Java Reader/Writer

مواضيع أخرى في Java

المضاربة في Java

في هذا الدليل، سنتعلم من خلال الأمثلة كيفية تحقيق التعددية في 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، يمكن تحقيق التعددية في الوقت التنفيذ من خلال إعادة كتابة الدوال.

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

مثال 1: إعادة كتابة الدوال

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.

لنأخذ تعطيل الطريقة كمثال.

مثال 3: تعطيل الطريقة

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.

استخدم عمليات الحساب المضافة (+) في 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.