返回利用后期静态绑......登陆

利用后期静态绑定技术,实现在父类调用子类中重写的静态成员

吴勇文2019-03-24 23:01:31258
<?php
//后期静态绑定,也叫延迟静态绑定
class Father
{
    //静态属性
    public static $money = 5000;

    //静态方法
    public static function getClass()
    {
        //返回当前的类名
        return __CLASS__;
    }

    //静态方法
    public static function getMoney()
    {
//        return self::getClass().'=>'.self::$money;
        //static 用在静态继承的上下文中,动态设置静态成员的调用者(主体)
          return static::getClass().'=>'.static::$money;
    }
}

//定义子类,继承自Father
class Son extends Father
{
    //覆写静态属性
    public static $money = 3000;

    //覆写静态方法
    public static function getClass()
    {
        //返回当前的类名
        return __CLASS__;
    }
}

//调用Father中的静态方法,来获取类名
echo Father::getClass(),'<br>';
echo Father::getMoney(),'<br>';

//调用子类Son中的静态成员
echo Son::$money,'<br>';
echo Son::getClass(),'<br>';
echo '<hr>';
//子类中调用父类中的getMoney
echo Son::getMoney(),'<br>';

后期静态绑定技术主要是通过在父类的方法中使用static而不是self来实现,如果父类有子类的话,会自动调用子类中的静态属性和静态方法来覆写父类中的静态属性和静态方法

QQ图片20190324230104.png

最新手记推荐

• 用composer安装thinkphp框架的步骤• 省市区接口说明• 用thinkphp,后台新增栏目• 管理员添加编辑删除• 管理员添加编辑删除

全部回复(0)我要回复

暂无评论~
  • 取消回复发送