美文网首页
在php中extends与implements的区别

在php中extends与implements的区别

作者: Style红尘百戏 | 来源:发表于2016-06-23 11:44 被阅读0次

    PHP

    类是单继承,也就是不支持多继承,当一个类需要多个类的功能时,继承就无能为力了,为此 PHP 引入了类的接口技术。

    接口的使用使用implements关键字,而对抽象类使用的是extends继承关键字。

    在接口中只能定义常量和方法,不能实现方法,const定义常量,functionUser();不能使用pubilc

    $a ="a"与 pubilc static$a

    ="a";

    //抽象类

    abstract class Father {

    function name() {

    echo "name...
    ";

    }

    abstract function name2();

    public $n="n1";

    public static $n2="n2";

    const n3="n3";

    }

    class Data extends Father {

    function name2() {

    echo "name2 of Data...
    ";

    }

    }

    $v=new Data();

    echo $v->var1."
    ";

    echo Father::$n2."
    ";

    echo Father::n3."
    ";

    //实现接口

    interface User{

    function getDiscount();

    function getUserType();

    }

    //VIP用户 接口实现

    class VipUser implements User{

    private $discount = 0.5;

    function getDiscount() {

    return $this->discount;

    }

    function getUserType() {

    return "VIP用户";

    }

    }

    class Goods{

    //public $price="45";        此处接口定义中不能包含成员变量

    //public static $price="45"; 此处接口定义中不能包含静态变量

    //

    const price = 45;

    public $vc;

    //定义 User 接口类型参数,这时并不知道是什么用户

    function run(User $vc){

    $this->vc = $vc;

    $discount = $this->vc->getDiscount();

    $usertype = $this->vc->getUserType();

    echo $usertype."商品价格:".self::price*$discount;

    }

    }

    $display = new Goods();

    $display ->run(new VipUser); //可以是更多其他用户类型

    ?>

    相关文章

      网友评论

          本文标题:在php中extends与implements的区别

          本文链接:https://www.haomeiwen.com/subject/wfgndttx.html