ホームページ > バックエンド開発 > PHPチュートリアル > 对这个打印的结果有点不明白?

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

WBOY
リリース: 2016-06-06 20:17:05
オリジナル
1181 人が閲覧しました

为什么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 までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート