TGViewer
PHP | Вопросы собесов PHP | Вопросы собесов @easy_php_ru · 2.3K subscribers
Post #1995 424
🤔 Расскажи про полиморфизм

Полиморфизм — это одна из ключевых концепций ООП (объектно-ориентированного программирования), которая позволяет объектам разного типа использовать один и тот же интерфейс. Это значит, что один метод может работать с разными типами данных, но при этом давать корректный результат.

🚩Зачем нужен полиморфизм?

🟠Гибкость кода
можно легко заменять одни классы другими, не меняя общий код.
🟠Упрощение поддержки
код становится понятнее и легче для расширения.
🟠Сокращение дублирования
один общий интерфейс может использоваться разными классами.

🚩Виды полиморфизма

Полиморфизм через наследование (override, переопределение методов)
Полиморфизм через интерфейсы (реализация одного интерфейса разными классами)

🚩Полиморфизм через наследование

Допустим, у нас есть базовый класс Animal, у которого есть метод makeSound(). Разные животные будут издавать разные звуки, но все они будут использовать этот метод.
class Animal {
public function makeSound() {
return "Some sound";
}
}

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

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

function printSound(Animal $animal) {
echo $animal->makeSound() . PHP_EOL;
}

printSound(new Dog()); // Выведет "Woof!"
printSound(new Cat()); // Выведет "Meow!"


🚩Полиморфизм через интерфейсы

Иногда классы не связаны через наследование, но должны поддерживать общий метод. Для этого используется интерфейс:
interface Shape {
public function getArea(): float;
}

class Circle implements Shape {
private $radius;

public function __construct($radius) {
$this->radius = $radius;
}

public function getArea(): float {
return pi() * $this->radius * $this->radius;
}
}

class Rectangle implements Shape {
private $width, $height;

public function __construct($width, $height) {
$this->width = $width;
$this->height = $height;
}

public function getArea(): float {
return $this->width * $this->height;
}
}

function printArea(Shape $shape) {
echo "Площадь: " . $shape->getArea() . PHP_EOL;
}

printArea(new Circle(5)); // Выведет площадь круга
printArea(new Rectangle(4, 6)); // Выведет площадь прямоугольника


Ставь 👍 и забирай 📚 Базу знаний
More from @easy_php_ru
  1. Oct 15, 2026🤔 Что есть кроме микросервисной и монолитной архитектуры? Помимо монолитной и микросервис…
  2. Oct 14, 2026🤔 В чём суть абстрактного класса? Абстрактный класс — это класс, который нельзя инстанцир…
  3. Oct 14, 2026🤔 В чем принцип работы HashTable? Хеш-таблица – это структура данных, которая хранит пары…
  4. Oct 13, 2026Post #2477
  5. Oct 13, 2026🤔 Что такое namespaces Namespaces в PHP — это способ организации кода для предотвращения…
  6. Oct 13, 2026🤔 Чем отличается Require от Includ'а? В PHP есть две схожие конструкции для подключения ф…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →