首頁 > 後端開發 > php教程 > 对这个打印的结果有点不明白?

对这个打印的结果有点不明白?

WBOY
發布: 2016-06-06 20:17:05
原創
1185 人瀏覽過

为什么cry是用的祖父的方法 而age和leg却是用的自己的属性?这是为什么?而我输出man::t1()却全是用的祖父的方法和属性

<code><?php class Animal{
    const age=1;
    public static $leg=4;
    public static function cry(){
        echo "1111";
    }
    public static function t1(){
        self::cry();
        echo self::age;
        echo self::$leg;
    }
    public static function t2(){
        self::cry();
        echo static::age;
        echo static::$leg;
    }
}
class human extends Animal{
    const age=30;
    public static $leg=2;
    public static function cry(){
        echo "5555";
    }
}
class man extends human{
    const age=16;
    public static $leg=1;
    public static function cry(){
        echo "aaaa";
    }
}

man::t2();
?></code>
登入後複製
登入後複製

回复内容:

为什么cry是用的祖父的方法 而age和leg却是用的自己的属性?这是为什么?而我输出man::t1()却全是用的祖父的方法和属性

<code><?php class Animal{
    const age=1;
    public static $leg=4;
    public static function cry(){
        echo "1111";
    }
    public static function t1(){
        self::cry();
        echo self::age;
        echo self::$leg;
    }
    public static function t2(){
        self::cry();
        echo static::age;
        echo static::$leg;
    }
}
class human extends Animal{
    const age=30;
    public static $leg=2;
    public static function cry(){
        echo "5555";
    }
}
class man extends human{
    const age=16;
    public static $leg=1;
    public static function cry(){
        echo "aaaa";
    }
}

man::t2();
?></code>
登入後複製
登入後複製

t1() 里面写的都是self当然都是调用祖父自己的。

t2() 里面self调用祖父自己的cry(),由于属性用了static声明(后静态绑定)。就调用到了man自己的属性。

self...

相關標籤:
php
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板