<?php
class Demo1
{
public static $name = 'peter';
protected static $salary = 3000;
public static function show () //非静态方法可以访问静态属性
{
// return self::$name; //self::访问本类中的静态成员
// return static::$name; //satic::访问调用类中的静态成员
return static::$sex; //static::访问调用类(子类)中的静态成员,如果当前为Demo2
//static与self和parent不同,它对应的类是动态设置的,由调用类决定,如果说self和parent
//是静态绑定类(编译时就已确定),那么static对应的类,只有在运行时才可以确定,
//所以又叫:延迟静态绑定,有的教程也称作:后期静态绑定
}
}
class Demo2 extends Demo1
{
public static $sex = 'male';
public static function display ()
{
//parent::访问父类中的静态成员,static::访问调用它的类中的静态属性
return parent::$name.'的工资是:'.parent::$salary.'性别是:'.static::$sex;
}
}
echo '姓名是:'.Demo1::$name; //外部访问静态属性
echo '<hr>';
echo '姓名是:'.Demo2::show();//外部访问静态方法
echo '<hr>';
echo Demo2::display(); //外部访问子类中的静态方法