Sobes.tech
Junior

Маънои полиморфизм дар барномасозӣ чист?

sobes.tech AI

Ҷавоб аз AI

Полиморфизм имкон медиҳад, ки объектҳои класиҳои гуногун, ки дорои интерфейси умумӣ ҳастанд, тавассути "типы" умумӣ (масалан, класи асосӣ ё интерфейс) истифода шаванд.

Мақсади асосии он:

  • Якумсозии кор бо объектҳо: Имкон медиҳад, ки код нависед, ки аз навъи махсуси объект вобаста нест, балки бо он тавассути абстраксия кор мекунад.
  • Флексибиллик: Осон аст, ки класиҳои навро илова кунед, ки ҳамин интерфейсро иҷро мекунанд, бе тағир додани коди мавҷуда, ки ин абстраксияро истифода мебарад.
  • Дидгоҳ ва нигоҳдорӣ: Код бештар сохторӣ ва фаҳмо мешавад, зеро мураккабии иҷрои мушаххас дар пасзаминаи интерфейси ягона пинҳон мешавад.

Принсип ин аст, ки ҳамон як метод, ки дар объектҳои гуногун даъват мешавад, дар асоси типи мушаххасашон, рафторҳои гуногун дорад.

Масалан дар PHP:

<?php

interface Animal {
    public function makeSound();
}

class Dog implements Animal {
    public function makeSound() {
        return "Woof!";
    }
}

class Cat implements Animal {
    public function makeSound() {
        return "Meow!";
    }
}

function hearAnimalSound(Animal $animal) {
    echo $animal->makeSound() . "\n";
}

$dog = new Dog();
$cat = new Cat();

hearAnimalSound($dog); // "Woof!" мебарорад
hearAnimalSound($cat); // "Meow!" мебарорад

?>

Дар ин мисол, функсияи hearAnimalSound ҳар объектеро қабул мекунад, ки интерфейси Animal-ро иҷро мекунад. Даъвати методи makeSound() дар дохили ин функсия, дар объектҳои Dog ва Cat, рафторҳои гуногун дорад, ки полиморфизмро нишон медиҳад.