例如:
在父类中含有静态方法a,b,子类中含有静态方法a
父类的b方法调用自身的a方法,这时候当子类调用父类的b方法时,
self::a()是调用父类自身的a方法呢,还是调用子类自己的a方法
答案:self调用的是父类的a方法
父类中又增加一个静态方法c,用static::a(),这时候调用的是父类的还是子类的a方法呢?
答案:static调用的是子类的a方法
<?php
class Test
{
public static function a()
{
echo '父类的a方法<br/>';
}
public static function b()
{
self::a();
echo '父类的b方法<br/>';
}
public static function c()
{
static::a();// 子类没有c方法,用static::a(),则调用子类的a()方法
}
}
class child_test extends Test
{
public static function a()
{
echo '子类的a方法<br/>';
}
}
child_test::b();
child_test::c();
?>