Назад к вопросам
Junior
373
questionbank
Что такое полиморфизм?
Sobes Copilot
Получайте ответы в реальном времени
Ответ от нейросети
sobes.tech AI
Полиморфизм – это возможность работать с различными типами объектов, используя единый интерфейс. В контексте ООП в PHP это проявляется через:
- Наследование: Дочерние классы могут переопределять методы родительского класса, предоставляя собственную реализацию. При вызове этого метода на объекте дочернего класса будет выполнена его специфическая версия.
- Интерфейсы: Различные классы могут реализовывать один и тот же интерфейс, предоставляя специфическую реализацию методов, определенных в интерфейсе. Объекты этих классов можно рассматривать как объекты типа интерфейса, вызывая на них методы интерфейса.
Полиморфизм позволяет создавать более гибкий и расширяемый код, так как можно работать с коллекцией объектов разных типов единообразно, не зная конкретного типа каждого объекта заранее.
Пример с наследованием:
<?php
class Animal {
public function makeSound() {
// Базовая реализация
}
}
class Dog extends Animal {
public function makeSound() {
return "Гав!";
}
}
class Cat extends Animal {
public function makeSound() {
return "Мяу!";
}
}
// Работа с объектами разных классов через общий интерфейс (метод makeSound)
$animals = [new Dog(), new Cat()];
foreach ($animals as $animal) {
echo $animal->makeSound() . "\n";
}
Пример с интерфейсом:
<?php
interface Shape {
public function getArea();
}
class Circle implements Shape {
private $radius;
public function __construct($radius) {
$this->radius = $radius;
}
public function getArea() {
return pi() * pow($this->radius, 2);
}
}
class Square implements Shape {
private $side;
public function __construct($side) {
$this->side = $side;
}
public function getArea() {
return pow($this->side, 2);
}
}
// Работа с объектами разных классов через общий интерфейс Shape
$shapes = [new Circle(5), new Square(10)];
foreach ($shapes as $shape) {
echo "Площадь: " . $shape->getArea() . "\n";
}