Использование пустого метода интерфейса и множественного наследования для одного нормального класса

1

Как и в интерфейсе, только метод указывается без кодов, таких как

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
}
}

Поскольку животные и люди - это два класса различий, основная часть - часть, то же самое, что они едят пищу, но стиль отличается, так что на самом деле это полезно и как интерфейс поддерживает множественное наследование

  • 3
    Возможные дубликаты интерфейсов PHP: как их можно использовать на практике?
  • 0
    его не очищается
Показать ещё 2 комментария
Теги:
oop
inheritance
interface
multiple-inheritance

2 ответа

1

Интерфейсы полезны для скрытия данных. Скажем, вы хотите предоставить класс для некоторого кода клиента, но не хотите предоставлять им полный доступ. Один из способов ограничить доступ, не ограничивая функциональность вашего класса, - это реализовать интерфейс и потребовать, чтобы клиентский код получал объекты через фабрику.

Другим преимуществом интерфейсов является развитие команды. Если у вас есть дюжина программистов, работающих с разными фрагментами кода, которые необходимо подключить, лучше всего определить интерфейсы для соединений. Пока программисты пишут в соответствии с интерфейсами, все будет хорошо связываться независимо от личных предпочтений и стиля.

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

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

источник

0

они действительно едят пищу, но стиль отличается, так что на самом деле это полезно

Вы должны прочитать о подсказках типа. Интерфейсы полезны для управления объектами, которые обмениваются поведением, но вы не знаете до запуска, какой объект вам придется использовать.

Рассмотрим функцию, которая заставляет существ есть. Поскольку вы создаете интерфейс, вы можете набрать подсказку интерфейса в функции, чтобы он мог управлять любыми видами существ:

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());

Ещё вопросы

Сообщество Overcoder
Наверх
Меню