چند شکلی جاوا(Java Polymorphism)


Polymorphism به معنای "شکل های متعدد" است و زمانی رخ می دهد که ما کلاس های زیادی داشته باشیم که از طریق وراثت به یکدیگر مرتبط هستند.


همانطور که در فصل قبل مشخص کردیم.
ارث به ما اجازه می دهد
ویژگی ها و متدها را از کلاس دیگری به ارث می برند. چند شکلی
از آن روش ها برای انجام وظایف مختلف استفاده می کند. این به ما امکان می دهد یک تک آهنگ را اجرا کنیم
به روش های مختلف عمل کنید.


به عنوان مثال، به یک سوپرکلاس به نام Animal فکر کنید که متدی به نام animalSound() دارد. زیرمجموعه‌های حیوانات می‌توانند خوک‌ها، گربه‌ها، سگ‌ها، پرندگان باشند - و آنها همچنین اجرای خود را از صدای حیوانات دارند (خوک جوک می‌زند و گربه میو می‌کند و غیره):




مثال


class Animal {
  public void animalSound() {
    System.out.println("The animal makes a sound");
  }
}

class Pig extends Animal {
  public void animalSound() {
    System.out.println("The pig says: wee wee");
  }
}

class Dog extends Animal {
  public void animalSound() {
    System.out.println("The dog says: bow wow");
  }
}




از فصل وراثت به خاطر داشته باشید که از کلمه کلیدی extends برای به ارث بردن از یک کلاس استفاده می‌کنیم. p>



اکنون می‌توانیم Pig و ایجاد کنیم.
Dog
را می بینید و روش animalSound() را روی هر دوی آنها فراخوانی کنید:



مثال


class Animal {
  public void animalSound() {
    System.out.println("The animal makes a sound");
  }
}

class Pig extends Animal {
  public void animalSound() {
    System.out.println("The pig says: wee wee");
  }
}

class Dog extends Animal {
  public void animalSound() {
    System.out.println("The dog says: bow wow");
  }
}

class MyMainClass {
  public static void main(String[] args) {
    Animal myAnimal = new Animal();  // Create a Animal object
    Animal myPig = new Pig();  // Create a Pig object
    Animal myDog = new Dog();  // Create a Dog object
    myAnimal.animalSound();
    myPig.animalSound();
    myDog.animalSound();
  }
}







چرا و چه زمانی از "وارث" و "چند شکلی" استفاده کنیم؟


- برای قابلیت استفاده مجدد کد مفید است: هنگامی که یک کلاس جدید ایجاد می کنید، از ویژگی ها و روش های یک کلاس موجود استفاده مجدد کنید.