Так как в интерфейсе указан только метод без кодов, например
interface eat {
public function ways_of_eating_food($givingsomefood);
}
//and remaining class does is only access the method whats the use of it as they could manually create it in the class to
class human implements eat {
public function ways_of_eating_food($foodtoeat){
This is how people eat the food//
}
}
class animal implements eat {
public function ways_of_eating_food($foodtoeat){
//this is how animal eat the food
}
}
Поскольку животные и люди являются двумя классами различий, основная часть является одной и той же, то есть они едят данную пищу, но стиль отличается, так что на самом деле это полезно и как интерфейс поддерживает множественное наследование
Интерфейсы полезны для сокрытия данных. Допустим, вы хотите предоставить класс для некоторого клиентского кода, но не хотите предоставлять им полный доступ. Один из способов ограничить доступ без ограничения функциональности вашего класса — реализовать интерфейс и требовать, чтобы клиентский код получал объекты через фабрику.
Еще одно преимущество интерфейсов — командная разработка. Если у вас есть дюжина программистов, работающих над разными частями кода, которые необходимо подключить, лучше всего определить интерфейсы для подключений. Пока программисты пишут в соответствии с интерфейсами, все будет красиво соединяться независимо от личного выбора и стиля.
Еще одно преимущество заключается в том, что с интерфейсами вы можете использовать класс, не определив его первым. Например, если у вас есть класс, который выполняет много сложной работы и не будет закончен до остальной части проекта, остальная часть проекта может использовать интерфейс к нему и избежать зависания при разработке этого одного класса. ,
Представьте, что вы на самом деле не знаете, как по-разному питаются живые существа, но вы не хотите, чтобы другие классы не функционировали, прежде чем вы откроете для себя все возможные методы питания. Просто объявите интерфейс, и пусть другие классы реализуют его.
они едят, учитывая, но стиль отличается, так что на самом деле это полезно
Вы должны прочитать о Тип-подсказка. Интерфейсы полезны для управления объектами с общим поведением, но вы не знаете до времени выполнения, какой объект вам придется использовать.
Рассмотрим функцию, которая заставляет существа есть. Поскольку вы создаете интерфейс, вы можете ввести подсказку в интерфейсе функции, чтобы он мог управлять любыми существами:
function makeEat(eat $obj) { $obj->ways_of_eating_food( getFood() ); }
function getFood() { return $food; }
Однако если бы вы не определили интерфейс, вам бы пришлось создать функцию, которая заставляла бы людей есть, другую — чтобы кошки ели, другую — чтобы собаки ели и т. Д. Это действительно нецелесообразно. Используя интерфейс и намекая его на функцию, вы можете использовать ту же функцию для выполнения той же работы.
Как интерфейс поддерживает множественное наследование
Как прокомментировал Винсент:
PHP поддерживает многоуровневое наследование, а не множественное наследование.
Это означает, что вы можете воплощать в жизнь несколько разных интерфейсов, но не простираться несколько классов.
interface living { public function eat(food $food); }
interface food { public function getEnergyValue(); }
interface animal { public function breath(); }
class cow implements living, animal
{
private $energy = 0;
private $secondsRemaining = 10;
public function eat(food $food) { $this->energy += $food->getEnergyValue(); }
public function breath() { $this->secondsRemaining += 10; }
}
class salad implements food
{
private $value = 50;
public function getEnergyValue() { return $this->value; }
}
$bob = new cow();
$bob->eat(new salad());