<?php/** * PHP物件導向編程簡單一實例 */date_default_timezone_set("PRC");/** 1.靜態屬性用於儲存類的公有資料* 2.靜態方法裡面只能訪問靜態屬性* 3.靜態成員不需要執行個體化對象就可以進行訪問* 4.類的內部可以通過self或者static關鍵字訪問自身靜態成員* 5.可以通過parent關鍵字訪問父類的靜態成員* 6.可以通過類的名稱在類定義外部存取靜態成員**/class Human{ public $name; protected $height; //只有自身和子類可以訪問 public $weight; private $isHungry = true; //不能被子類訪問 public static $sValue = "Static value in Human class"."\n"; public function eat($food){ echo $this->name."'s eating "."'$food"."\n"; } public function info(){ echo "HUMAN :".$this->name. ";".$this->height.";".$this->isHungry."\n"; }}class Animal{}//類的定義以關鍵字class開始,後面是類的名稱,類的命名通常第一個字母大寫,以中括弧開始和結束//在PHP中用extends關鍵字表示類的繼承,後面跟父類的類名//PHP中extends後只能跟一個類的類名,這是PHP中的單繼承原則class NBaplayer extends Human{// public $name = "Jordan"; //定義屬性// public $height = "198cm";// public $weight = "98kg"; public $team = "Bull"; public $playernumber = "23"; private $age = "40"; //Private的類成員只能在內部被訪問//靜態屬性在定義時在存取控制關鍵字後面添加static關鍵字即可 public static $president = "David Stern";// 靜態方法在定義時在存取控制關鍵字後面添加static關鍵字即可 public static function changePresident($newpresdt){//在類定義中使用靜態成員時,用self或者static關鍵字後面跟::操作符即可//注意,在訪問靜態成員屬性時,::後面需要跟$符號 self ::$president = $newpresdt;//使用parent關鍵字訪問父類中的靜態成員 echo parent::$sValue."\n"; }//建構函式,在對象被執行個體化時自動調用 function __construct($name,$height,$weight,$team,$playernumber) { echo "in NBaplayer constuctor\n"; $this->name = $name; //$this是php裡面的偽變數,表示對象自身,可以通過$->this的方式訪問對象的屬性和方法 $this->height = $height; $this->weight = $weight; $this->team = $team; $this->playernumber = $playernumber; echo $this->height."\n"; }//解構函式,在程式執行結束時自動調用//解構函式通常被用於清理程式使用的資源。比如,程式使用了印表機,那麼可以在解構函式裡釋放印表機資源 function __destruct() { echo "Destroying ".$this->name."\n"; }//定義方法 public function run() { echo "running\n"; } public function jump() { echo "jumping\n"; } public function dribble() { echo "dribbling\n"; } public function shoot() { echo "shooting\n"; } public function dunk() { echo "dunking\n"; } public function pass() { echo "passing\n"; } public function getAge(){ echo $this->name."'s age is ".($this->age - 2)."\n"; }}//類到對象的執行個體化//類的對象為執行個體化時使用關鍵字new,後面是類的名稱和一堆括弧//$jordan = new NBaplayer("Jordan","198cm","98kg","Bull","23");//$james = new NBaplayer("James","203cm","120kg","Heat","6");//對象中的成員屬性通過->符號來訪問//在類定義外部存取靜態屬性,可以用類名加::操作符的方法來訪問類的靜態成員//echo NBaplayer::$president." Before change"."\n";//NBaplayer::changePresident("Aadam Siver");//echo NBaplayer::$president."\n";//echo Human::$sValue."\n";//echo "Jordan : ".$jordan->president."\n";// echo "James : ".$james->president."\n";//echo $jordan->name."\n";//echo $jordan->getAge();//$jordan->info();//$jordan->eat("Apple"); //在子類中的對象上可以直接存取父類中定義的屬性和方法//對象中的成員方法通過->符號來訪問//$jordan->dribble();//$jordan->dunk();// $jordan->jump();// $jordan->pass();// $jordan->run();// $jordan->shoot();//// //每一次用new執行個體化對象的時候,都會用類名後面的參數列表調用建構函式//$james = new NBaplayer("James","203cm","120kg","Heat","6");//echo $james->name."\n";// //通過把變數設定為Null,可以出發解構函式的調用// //當對象不會再被使用的時候,會觸發解構函式//$james1 = $james;//$james2 = &$james;//$james2 = null;//$james1 = null;// echo "From now on James will not be used.\n";
相關推薦:
JavaScript物件導向執行個體詳解
PHP物件導向之標識對象執行個體詳解
js物件導向之繼承知識詳解