使用interface empty方法和多重继承到单个普通类

时间:2015-12-10 18:42:16

标签: php oop inheritance interface multiple-inheritance

在界面中,只指定了没有像

这样的代码的方法
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
}
}

由于动物和人类是两个不同类,核心部分是相同的,他们确实吃了食物,但风格不同所以实际上这有用,界面如何支持多重继承

2 个答案:

答案 0 :(得分:1)

接口对于数据隐藏非常有用。我们假设您想为某些客户端代码提供课程,但不想让他们完全访问。在不限制类功能的情况下限制访问的一种方法是实现一个接口,并要求客户端代码通过工厂获取对象。

界面的另一个好处是团队开发。如果您有十几个程序员在处理需要连接的不同代码,那么最好为连接定义接口。只要程序员根据界面编写,无论个人选择和风格如何,一切都将很好地链接在一起。

另一个好处是,使用接口,您可以使用类而无需先定义它。例如,如果你有一个类可以完成许多复杂的工作并且在项目的其余部分之前就完成了,那么项目的其余部分可以使用它的接口,并避免因为它的开发而停滞不前。一节课。

想象一下,你真的不知道生活中可以吃的不同方式,但是在你发现所有可能的饮食方法之前,你不希望其他课程不起作用。只需声明一个接口吃掉,让其他类实现它。

source

答案 1 :(得分: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());