定义 :
接口是一种类似于类的结构,可用于实现类所必须实现的方法。多处用于差异化有些需要非固定动作,而且对于某些类来说必须实现的方法。
接口与抽象类类似,在方法定义上有明显区别,接口只能包含方法原型,不能包含任何方法的定义。除了这点一个类可实现多个接口,也就是间接实现了多重继承。
1. 接口用interface定义,用 implements实现
2. 如果某个类实现某个接口,就必须实现接口中的方法
3. 每个类可以实现多可接口
/**
比如目前物流系统中,货品具备有半成品和普通货品两个类型,半成品和货品唯一的区别就是有新增原料的方法和生产方法,其他属性和方法与普通货品一致
试着注释PriPrdGoods类中的addMaching,观察一下错误;
同时注意一个类可以同时实现PrePrdct,Product 这两个接口;
**/
//半成品接口
interface Preprdct{
//半成品具备增加原料的功能,其他普通商品不具备这个方法
public function addMaching($metail);
}
interface Product{
public function productMetail();
}
//货品类
class Goods{
private $gid;
private $gname;
private $type;
public function __construct($gid,$name,$type,$extends=array()){
$this->gid = $gid;
$this->name = $name;
$this->type = $type;
}
}
//半成品类
class PriPrdGoods extends Goods implements PrePrdct,Product{
public function addMaching( $metail ){
echo "添加原料 ".$metail."
";
}
public function productMetail(){
echo "生成办成品".$this->name."
";
}
}
//声明一个羊肉串的半成品
$priPrdGoods = new PriPrdGoods("1","羊肉串",1);
$priPrdGoods->addMaching("羊肉");
$priPrdGoods->productMetail();
代码截图:
结果: