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

Original 2019-03-30 17:27:22 419
abstract:<?php //定义一个父类 class Father {     //静态属性     public static $money = 50000;     //静态方法     p
<?php
//定义一个父类
class Father
{
    //静态属性
    public static $money = 50000;

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

    //静态方法
    public static function getMoney()
    {
//        return self::getClass().'有'.self::$money;

        //static 用在静态继承的上下文中,动态设置静态成员的调用者(主体)
        return static::getClass().'有'.static::$money;

    }
}

//定义一个子类
class Son extends Father
{
    //覆写父类的静态属性
    public static $money = 30000;

    //覆写父类的静态方法
    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>';

echo Son::getMoney();


Correcting teacher:西门大官人Correction time:2019-04-01 10:01:26
Teacher's summary:最好上传一下程序的运行效果图。并思考一下,子类可以继承父类的private成员吗?

Release Notes

Popular Entries