2015-12-10 2 views
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 Интерфейсы: Как они годные к употреблению на практике] (http://stackoverflow.com/questions/7380720/php-interfaces-how-are-they-usable-in-practice) – Machavity

+0

его не очищено –

+1

PHP поддерживает многоуровневое наследование, а не множественное наследование. Это означает, что у вас не может быть одного класса, наследующего форму 2 других класса. – wiredolphin

ответ

1

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

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

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

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

source

0

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

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

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

function makeEat(eat $obj) { $obj->ways_of_eating_food(getFood()); } 
function getFood() { return $food; } 

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

как может взаимодействовать поддерживает множественное наследование

Как commented Винсент:

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