PHP是单继承语言,因此一个类不能同时继承多个类。当一个类需要多个类的功能时,除了使用trait关键字,还可以使用接口技术。
如果一个抽象类里面的所有方法都是抽象方法,且没有声明变量,而且接口里面所有成员都是public权限的,那么这种特殊的抽象类就是接口。
应用场景:

  • 保持规范、统一性
  • 多个类需要实现同样的方法,只是实现方式不一样

接口使用规范:

  • 接口不能实例化
  • 接口属性必须是常量
  • 接口方法必须是public,且不能有函数体
  • 类必须实现接口的所有方法
  • 一个类可以同时实现多个接口,用逗号隔开
  • 接口可以继承接口,使用extends关键字。
  • 接口使用关键字interface来定义,使用implements关键字来实现
  • 类要实现接口,必须使用和接口中所定义的方法完全一致的方式。否则会导致致命错误.
  • 实现多个接口时,接口中的方法不能有重名。
<?php
//定义接口
interface User{
    function getDiscount();
    function getUserType();
}
//VIP用户 接口实现
class VipUser implements User{
    // VIP 用户折扣系数
    private $discount = 0.8;
    function getDiscount() {
        return $this->discount;
    }
    function getUserType() {
        return "VIP用户";
    }
}
class Goods{
    var $price = 100;
    var $vc;
    //定义 User 接口类型参数,这时并不知道是什么用户
    function run(User $vc){
        $this->vc = $vc;
        $discount = $this->vc->getDiscount();
    $usertype = $this->vc->getUserType();
        echo $usertype."商品价格:".$this->price*$discount;
    }
}

$display = new Goods();
$display ->run(new VipUser);  //  VIP用户商品价格:80 元 
?>
最后修改:2020 年 12 月 10 日 08 : 31 PM
对您有帮助的话,请赏包辣条吧 ^~^