|
靜態 static聲明類成員或方法為 static ,就可以不實例化類而直接訪問,不能通過一個對像來訪問其中的靜態成員(靜態方法除外)。靜態成員屬於類,不屬於任何對像實例,但類的對象實例都能共享。
例子:
- <?php Class Person{ // 定義靜態成員屬性 public static $country = "中國"; // 定義靜態成員方法 public static function myCountry() { // 內部訪問靜態成員屬性 echo "我是".self::$country."人<br />"; } } class Student extends Person { function study() { echo "我是". parent::$country."人<br />"; } } // 輸出成員屬性值 echo Person::$country."<br />"; // 輸出:中國 $p1 = new Person(); //echo $p1->country; // 錯誤寫法 // 訪問靜態成員方法 Person::myCountry(); // 輸出:我是中國人 // 靜態方法也可通過對像訪問: $p1->myCountry(); // 子類中輸出成員屬性值 echo Student::$country."<br />"; // 輸出:中國 $t1 = new Student(); $t1->study(); // 輸出:我是中國人 ?>
複製代碼
運行該例子,輸出:
中國我是中國人我是中國人中國我是中國人小結在類內部訪問靜態成員屬性或者方法,使用 self::(注意不是 $slef),如:
- slef:: $country slef:: myCountry()
複製代碼
在子類訪問父類靜態成員屬性或方法,使用 parent::(注意不是 $parent),如:
- parent:: $country parent:: myCountry()
複製代碼
外部訪問靜態成員屬性和方法為 類名/子類名:: ,如:
- Person::$country Person::myCountry() Student::$country
複製代碼
但靜態方法也可以通過普通對象的方式訪問。
|
|