Назад к вопросам
Middle
98
questionbank
Как реализуется полиморфизм в PHP?
Sobes Copilot
Получайте ответы в реальном времени
Ответ от нейросети
sobes.tech AI
Полиморфизм в PHP реализуется через:
- Наследование классов: Дочерние классы могут переопределять методы родительских классов.
- Интерфейсы: Классы, реализующие один и тот же интерфейс, должны иметь определенные методы, но их реализация может отличаться.
- Трейты: Методы разных трейтов, используемых в одном классе, могут выполнять схожие задачи, но иметь разную внутреннюю логику.
Пример полиморфизма через наследование:
<?php
class Animal {
public function sound() {
return "Неизвестный звук";
}
}
class Dog extends Animal {
public function sound() {
return "Гав!"; // Переопределение метода
}
}
class Cat extends Animal {
public function sound() {
return "Мяу!"; // Переопределение метода
}
}
function makeAnimalSound(Animal $animal) {
echo $animal->sound() . "\n";
}
$dog = new Dog();
$cat = new Cat();
makeAnimalSound($dog); // Выводит "Гав!"
makeAnimalSound($cat); // Выводит "Мяу!"
Пример полиморфизма через интерфейсы:
<?php
interface Shape {
public function getArea();
}
class Circle implements Shape {
private $radius;
public function __construct($radius) {
$this->radius = $radius;
}
public function getArea() {
return pi() * $this->radius * $this->radius;
}
}
class Square implements Shape {
private $side;
public function __construct($side) {
$this->side = $side;
}
public function getArea() {
return $this->side * $this->side;
}
}
function printArea(Shape $shape) {
echo "Площадь: " . $shape->getArea() . "\n";
}
$circle = new Circle(5);
$square = new Square(4);
printArea($circle); // Выводит площадь круга
printArea($square); // Выводит площадь квадрата