Интерфейсы
Интерфейс - это набор методов, которые должны быть реализованы классом, который его реализует. Это позволяет создавать более гибкий и расширяемый код.
Практическая задача 1:
// Описание интерфейса Movable с методом move()
interface Movable {
public function move();
}
// Описание класса Person, который реализует интерфейс Movable и содержит свойство $name
class Person implements Movable {
private $name;
public function __construct($name) {
$this->name = $name;
}
// Реализация метода move(), который выводит сообщение "Гуляем"
public function move() {
echo "Гуляем";
}
}
Практическая задача 2:
// Описание интерфейса Playable с методом play()
interface Playable {
public function play();
}
// Описание класса Dog, который реализует интерфейс Playable и содержит свойство $name
class Dog implements Playable {
private $name;
public function __construct($name) {
$this->name = $name;
}
// Реализация метода play(), который выводит сообщение "Играем в мяч"
public function play() {
echo "Играем в мяч";
}
}
Абстрактные классы
Абстрактный класс - это класс, который не может быть создан напрямую, а только через наследование. Он может содержать абстрактные методы, которые должны быть реализованы в классах-наследниках.
Практическая задача 1:
// Описание абстрактного класса Animal с абстрактным методом move()
abstract class Animal {
abstract public function move();
}
// Описание класса Bird, который наследуется от класса Animal и реализует метод move(), который должен выводить сообщение "Летим"
class Bird extends Animal {
public function move() {
echo "Летим";
}
}
Практическая задача 2:
// Описание абстрактного класса Shape с абстрактным методом getArea()
abstract class Shape {
abstract public function getArea();
}
// Описание класса Circle, который наследуется от класса Shape и реализует метод getArea(), который должен вычислять площадь круга
class Circle extends Shape {
private $radius;
public function __construct($radius) {
$this->radius = $radius;
}
public function getArea() {
return pi() * pow($this->radius, 2);
}
}
Заключение
Использование интерфейсов и абстрактных классов может значительно упростить создание гибкого и расширяемого кода в PHP. Интерфейсы позволяют создавать классы, реализующие набор методов, а абстрактные классы - создавать базовый класс, описывающий общие свойства и методы для нескольких классов-наследников. Вместе они позволяют создавать более эффективный и удобный код на PHP.