找回密碼
 註冊
搜索
查看: 1686|回復: 0

[教學] PHP 類中定義靜態的成員屬性和方法使用 static 關鍵字

[複製鏈接]
發表於 2013-7-19 13:21:53 | 顯示全部樓層 |閱讀模式
 
Push to Facebook
靜態 static聲明類成員或方法為 static ,就可以不實例化類而直接訪問,不能通過一個對像來訪問其中的靜態成員(靜態方法除外)。靜態成員屬於類,不屬於任何對像實例,但類的對象實例都能共享。
例子:
  1. <?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),如:
  1. slef:: $country slef:: myCountry()
複製代碼

在子類訪問父類靜態成員屬性或方法,使用 parent::(注意不是 $parent),如:
  1. parent:: $country parent:: myCountry()
複製代碼

外部訪問靜態成員屬性和方法為 類名/子類名:: ,如:
  1. Person::$country Person::myCountry() Student::$country
複製代碼

但靜態方法也可以通過普通對象的方式訪問。
 
您需要登錄後才可以回帖 登錄 | 註冊

本版積分規則

Archiver|手機版|小黑屋|TShopping

GMT+8, 2025-5-1 00:11 , Processed in 0.025236 second(s), 21 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回復 返回頂部 返回列表