پلی مورفیسم(Polymorphism)


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


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


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



مثال



// Base class
class Animal {
  public:
    void
animalSound() {
    cout << "The animal makes a sound n"
;
  }
};

// Derived class

class Pig : public Animal {
  public:
    void
animalSound() {
    cout << "The pig says: wee wee n" ;
 
}
};

// Derived class
class Dog
: public Animal {
  public:
    void animalSound()
{
    cout << "The dog says: bow wow n" ;
  }

};




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



اکنون می‌توانیم Pig و ایجاد کنیم.
Dog
اشیاء می کند و روش animalSound() را لغو می کند:



مثال



// Base class
class Animal {
  public:
    void
animalSound() {
    cout << "The animal makes a sound n"
;
  }
};

// Derived class

class Pig : public Animal {
  public:
    void
animalSound() {
    cout << "The pig says: wee wee n" ;
  
}
};

// Derived class
class Dog
: public Animal {
  public:
    void animalSound()
{
    cout << "The dog says: bow wow n" ;
  }

};

int main() {
  Animal
myAnimal;
  Pig myPig;
  Dog myDog;

 
myAnimal.animalSound();
  myPig.animalSound();
 
myDog.animalSound();
  return 0;
}






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


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