C++ polimorfizm


ULASHISH

Polimorfizm

Polimorfizm "ko‘p shakllilik" degan ma’noni anglatadi va u bir-biri bilan vorislik orqali bog‘langan ko‘plab sinflar mavjud bo‘lganda yuzaga keladi.

Oldingi bobda aytganimizdek, vorislik boshqa sinfdan atributlar va metodlarni meros qilib olish imkonini beradi. Polimorfizm esa bu metodlardan turli vazifalarni bajarish uchun foydalanadi. Bu bitta amalni turli usullarda bajarish imkonini beradi.

Masalan, makeSound() nomli metodga ega Animal asosiy sinfini tasavvur qiling. Animal sinfining hosila sinflari cho‘chqalar, mushuklar, itlar, qushlar va h.k. bo‘lishi mumkin. Har bir hayvon "ovoz chiqara oladi", lekin har birining ovozi har xil:

  • Cho‘chqa: wee wee
  • It: bow wow
  • Qush: tweet tweet

Bu polimorfizm: bitta amal (ovoz chiqarish) har bir hayvonda turlicha namoyon bo‘ladi:

Misol

// 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";     } };

Vorislik bobidan eslang: sinfdan meros olish uchun : belgisidan foydalanamiz.

Endi Pig va Dog obyektlarini yaratib, animalSound() metodini qayta aniqlashimiz (override) mumkin:

Misol

// 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; }
O‘zingiz sinab ko‘ring »

Nima uchun va qachon "vorislik" va "polimorfizm"dan foydalanish kerak?

- Bu koddan qayta foydalanish uchun foydali: yangi sinf yaratganda mavjud sinfning atributlari va metodlaridan qayta foydalaning.





W3Schools Pathfinder

Yutuqlaringizni kuzating – bu bepul!