Как работать с наследованием и полиморфизмом в PHP?

Пользователь

от terrence , в категории: PHP , год назад

Как работать с наследованием и полиморфизмом в PHP?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

1 ответ

Пользователь

от wilburn , год назад

@terrence 

В PHP наследование и полиморфизм используются для создания иерархии классов, которые могут переопределять методы и свойства родительских классов. Наследование позволяет создавать новый класс на основе существующего класса, при этом новый класс будет наследовать все свойства и методы родительского класса.


Для создания класса-наследника в PHP используется ключевое слово extends. Например, если у вас есть класс Person, вы можете создать класс-наследник Employee, который будет наследовать свойства и методы Person:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
class Person {
  public $name;
  public function sayHello() {
    echo "Hello!";
  }
}

class Employee extends Person {
  public $position;
}


В этом примере класс Employee наследует свойство $name и метод sayHello() из класса Person. Также класс Employee имеет свойство $position, которое не определено в классе Person.


Полиморфизм в PHP позволяет использовать объекты разных классов с одинаковым интерфейсом. Например, если у вас есть классы Cat и Dog, которые имеют методы speak(), вы можете использовать эти методы в коде, не заботясь о том, какой именно объект используется:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
class Cat {
  public function speak() {
    echo "Meow";
  }
}

class Dog {
  public function speak() {
    echo "Woof";
  }
}

function makeSound($animal) {
  $animal->speak();
}

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

makeSound($cat); // выводит "Meow"
makeSound($dog); // выводит "Woof"


В этом примере функция makeSound() принимает объект $animal, который может быть объектом класса Cat или Dog. Но независимо от типа объекта, функция вызывает метод speak(), что дает ей возможность работать с разными типами объектов.


Таким образом, наследование и полиморфизм являются важными концепциями в PHP, которые позволяют создавать более гибкий и расширяемый код.