1. 程式人生 > >PHP學習——24 PHP面向物件(類中靜態成員的建立與訪問技巧:static)

PHP學習——24 PHP面向物件(類中靜態成員的建立與訪問技巧:static)

<?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的例項嗎? 是
?>