类继承,静态绑定,重载小总结

原创 2018-12-18 20:01:19 664
摘要:/*  * 类的继承使用extends关键字,子类可以继承父类的所有方法和属性,除了private私有的  * 范围解析符::的使用,它可以由self,parent,static三个关键字引用  *  * static关键字使用场景  * 1.定义和访问静态成员  * 2.访问类常量 &n
/*
 * 类的继承使用extends关键字,子类可以继承父类的所有方法和属性,除了private私有的
 * 范围解析符::的使用,它可以由self,parent,static三个关键字引用
 *
 * static关键字使用场景
 * 1.定义和访问静态成员
 * 2.访问类常量
 * 3.后期静态绑定,也叫延迟静态绑定
 *
 * 在静态继承的上下文当中,static可以动态成为属性和方法的调用者(主体),static在运行期内绑定调用者
 *
 * 属性和方法的重载
 *
 * 属性的重载有4个魔术方法 __get() __set() __isset() __unset()
 * 方法的重载有2个魔术方法 __call() __callStatic()
 *
 * 方法的重载可以实现夸类调用
 * */
 //方法重载夸类调用案例
class Car
{
    public function intro()
    {
        echo '我是一辆宝马';
    }

    public function show()
    {
        $brand = func_get_arg(0);
        $xinghao = func_get_arg(1);
        return 'Car::show(),'.'品牌'.$brand.',型号'.$xinghao;
    }

    public static function showStatic()
    {
        $brand = func_get_arg(0);
        $xinghao = func_get_arg(1);
        return 'Car::showStatic(),'.'品牌'.$brand.',型号'.$xinghao;
    }
}
class BMW
{
    public function __call($method,$args)
    {
        return call_user_func_array([(new Car()),$method],$args);
    }

    public function __callStatic($method,$args)
    {
        return call_user_func_array(['Car',$method],$args);
    }
}
$bm = new BMW();
echo $bm->show('宝马','XS5系列');
echo '<hr>';
echo $bm->showStatic('QQ','9S系列');


批改老师:韦小宝批改时间:2018-12-19 09:09:21
老师总结:写的很不错!这些知识点在以后的开发中是经常使用的!课后还要记得多练习啊!

发布手记

热门词条