Home > Article > Backend Development > 对这个打印的结果有点不明白?
为什么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...