版权声明:本文为博主原创文章,仅供学习交流,未经博主允许不得转载。 https://blog.csdn.net/zjy_android_blog/article/details/83447539
<?php
class Employee
{
// 访问控制符:指示类成员在哪里可以被访问:public/protected/private
// 成员状态符:指示如何访问该成员:静态self/parent/static,非静态:$this->
public static $name = '汤姆';// 公共静态属性,类内部/外部/子类均可访问
protected static $age = 22;// 受保护的静态属性,可以在类内部和子类中访问
private static $salary = 4000;// 私有静态属性,只能在类内部访问
public static function show() // 静态方法
{
// 静态属性只允许在静态方法中访问,静态方法不允许使用伪变量$this->
return '年龄:'.self::$age.' ---- 工资:'.self::$salary;
}
}
class Programmer extends Employee
{
public static function display()
{
// parent:: 引用父类中的静态成员(静态属性和静态方法)
return '姓名:'.parent::$name.' --- '.parent::show();
}
}
echo '姓名是:'.Employee::$name;// 外部访问静态成员,使用 类名::静态成员,静态属性必须加$符号
// 姓名是:汤姆
echo '<hr>';
echo Employee::show(); // 访问类中的静态方法show
// 年龄:22 ---- 工资:4000
echo '<hr>';
echo Programmer::show(); // 子类访问父类中的静态方法show
// 年龄:22 ---- 工资:4000
echo '<hr>';
echo Programmer::display(); // 访问子类中的静态方法display
// 姓名:汤姆 --- 年龄:22 ---- 工资:4000
echo '<hr>';
$employee = new Employee();
echo $employee::show(); // 用对象也可以访问类中的静态方法show
// 年龄:22 ---- 工资:4000
echo '<hr>';
echo $employee::$name; // 用对象也可以访问类中的公共静态属性
// 汤姆
// echo '年龄:'.$employee::$age.; // 外部对象不能访问受保护和私有的静态属性
echo '<hr>';
$res = $employee instanceof Employee; // instanceof用于检查一个对象是否一个类的实例
echo '$employee是Employee的实例吗? '.($res?"是":"否");
// $employee是Employee的实例吗? 是
?>