PHP中的面向
對象實踐
基本實踐
進階實踐
特殊實踐
類的概念
執行個體化的概念
建構函式
解構函式
資料訪問
對象引用的概念
類的概念
對象編程——基本實踐DAY 2">
類
? 物以類聚,把具有相似特性的
對象歸類到一個類中
? 類定義了這些相似
對象擁有的相同的屬性和方法
? 類是相似
對象的描述,稱為類的定義,是該類
對象的藍圖或者原型
? 類的
對象稱為類的一個執行個體(Instance) //類畫了一個架構,
對象把架構塞滿
? 類的屬性和方法統稱為類成員
例子
? NBA球員就是一個類的定義(Class Definition)
? 喬丹、詹姆斯、科比稱為類的執行個體(Instance)
NBA球員
+姓名
+身高
+體重
+所在球隊
+球員號碼
------------
+跑步()
+跳躍()
+運球()
+投籃()
+扣籃()
+傳球()
類的執行個體化(instantiate)
<插入兩張圖片>
對象編程——基本實踐DAY 2">
對象編程——基本實踐DAY 2">
案例
類和類的執行個體化案例
? 如何定義一個類
? 如何執行個體化類的
對象
? 如何調用類的方法
? 建構函式
? 解構函式
對象的執行個體化//類的執行個體化為對象時使用關鍵字new,new之後緊跟這類的名稱和一對括弧$jordan = new NbaPlayer();//對象中的屬性成員可以通過->符號來訪問echo $jordan->name."\n";//對象中的成員方法可以通過->符號來訪問$jordan->dribble();$jordan->pass();?>
Output:
Jordan
Dribbling
Passing
建構函式
對象被執行個體化的時候自動調用function __construct($name,$height,$weight,$team,$playerNumber){ //沒有被明確調用,但是也被調用了echo "In NbaPlayer Constructor\n";$this->name=$name; //$this是PHP裡的偽變數,表示對象自身。可以通過$this->的方法訪問對象的屬性和方法$this->height=$height;$this->weight=$weight;$this->team=$team;$this->playerNumber=$playerNumber; }//定義方法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";}}//類到對象的執行個體化//類的執行個體化為對象時使用關鍵字new,new之後緊跟這類的名稱和一對括弧$jordan = new NbaPlayer("Jordan","198cm","98kg","Bull","23");//對象中的屬性成員可以通過->符號來訪問echo $jordan->name."\n";//對象中的成員方法可以通過->符號來訪問$jordan->dribble();$jordan->pass();//每一次用new執行個體化對象的時候,都會用類名後面的參數列比調用建構函式$james= new NbaPlayer("James","203cm","120kg","Heat","6");echo $james->name;echo $james->height;echo $james->weight;echo $james->team;echo $james->playerNumber;?>
Output:
In NbaPlayer Constructor
Jordan
Dribbling
Passing
In NbaPlayer Constructor
James
203cm
120kg
Heat
6
解構函式
對象被執行個體化的時候自動調用function __construct($name,$height,$weight,$team,$playerNumber){ //沒有被明確調用,但是也被調用了echo "In NbaPlayer Constructor\n";$this->name=$name; //$this是PHP裡的偽變數,表示對象自身。可以通過$this->的方法訪問對象的屬性和方法$this->height=$height;$this->weight=$weight;$this->team=$team;$this->playerNumber=$playerNumber; }//解構函式,在程式執行結束的時候會自動調用//解構函式通常被用於清理程式使用的資源,比如程式使用了印表機,那麼可以在解構函式裡面釋放印表機資源。function __destruct(){echo "Destroying ".$this->name."
";}//定義方法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";}}//類到對象的執行個體化//類的執行個體化為對象時使用關鍵字new,new之後緊跟這類的名稱和一對括弧$jordan = new NbaPlayer("Jordan","198cm","98kg","Bull","23");//對象中的屬性成員可以通過->符號來訪問echo $jordan->name."\n";//對象中的成員方法可以通過->符號來訪問$jordan->dribble();$jordan->pass();//每一次用new執行個體化對象的時候,都會用類名後面的參數列比調用建構函式$james= new NbaPlayer("James","203cm","120kg","Heat","6");echo $james->name;//通過把變數設定為null,可以觸發解構函式的調用$james=null;echo "From now on James will not be used.
";?>
Output:
In NbaPlayer Constructor
Jordan
Dribbling
Passing
In NbaPlayer Constructor
James
Destroying James
From now on James will not be used.
Destroying Jordan
對象引用的基本概念
對象引用賦值
對象編程——基本實踐DAY 2">
詹姆斯是一個對象。
$james就是對象的引用,直接指向詹姆斯這個對象。
$james1和$james是兩個獨立的引用,$james1這個對象的引用直接指向詹姆斯這個對象。
$james2是一個指向$james這個對象引用的對象引用(有點拗口),沒有直接指向詹姆斯這個對象。$james2是通過$james這個對象引用去指向詹姆斯這個對象的
現在直接指向對象詹姆斯的對象的引用有兩個,即$james和$james1。而$james2是$james的映像。
樣本一:
對象被執行個體化的時候自動調用function __construct($name,$height,$weight,$team,$playerNumber){ //沒有被明確調用,但是也被調用了echo "In NbaPlayer Constructor\n";$this->name=$name; //$this是PHP裡的偽變數,表示對象自身。可以通過$this->的方法訪問對象的屬性和方法$this->height=$height;$this->weight=$weight;$this->team=$team;$this->playerNumber=$playerNumber; }//解構函式,在程式執行結束的時候會自動調用//解構函式通常被用於清理程式使用的資源,比如程式使用了印表機,那麼可以在解構函式裡面釋放印表機資源。function __destruct(){echo "Destroying ".$this->name."
";}//定義方法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";}}//類到對象的執行個體化//類的執行個體化為對象時使用關鍵字new,new之後緊跟這類的名稱和一對括弧$jordan = new NbaPlayer("Jordan","198cm","98kg","Bull","23");//對象中的屬性成員可以通過->符號來訪問echo $jordan->name."\n";//對象中的成員方法可以通過->符號來訪問$jordan->dribble();$jordan->pass();//每一次用new執行個體化對象的時候,都會用類名後面的參數列比調用建構函式$james= new NbaPlayer("James","203cm","120kg","Heat","6");echo $james->name;//通過把變數設定為null,可以觸發解構函式的調用//當對象不會再被使用的時候,會觸發解構函式//james1也是指向new NbaPlayer();$james1=$james; $james=null;echo "From now on James will not be used.
";?>Output:
In NbaPlayer Constructor
Jordan
Dribbling
Passing
In NbaPlayer Constructor
James
From now on James will not be used.
Destroying James
Destroying Jordan
樣本二:
對象被執行個體化的時候自動調用function __construct($name,$height,$weight,$team,$playerNumber){ //沒有被明確調用,但是也被調用了echo "In NbaPlayer Constructor\n";$this->name=$name; //$this是PHP裡的偽變數,表示對象自身。可以通過$this->的方法訪問對象的屬性和方法$this->height=$height;$this->weight=$weight;$this->team=$team;$this->playerNumber=$playerNumber; }//解構函式,在程式執行結束的時候會自動調用//解構函式通常被用於清理程式使用的資源,比如程式使用了印表機,那麼可以在解構函式裡面釋放印表機資源。function __destruct(){echo "Destroying ".$this->name."
";}//定義方法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";}}//類到對象的執行個體化//類的執行個體化為對象時使用關鍵字new,new之後緊跟這類的名稱和一對括弧$jordan = new NbaPlayer("Jordan","198cm","98kg","Bull","23");//對象中的屬性成員可以通過->符號來訪問echo $jordan->name."\n";//對象中的成員方法可以通過->符號來訪問$jordan->dribble();$jordan->pass();//每一次用new執行個體化對象的時候,都會用類名後面的參數列比調用建構函式$james= new NbaPlayer("James","203cm","120kg","Heat","6");echo $james->name;//通過把變數設定為null,可以觸發解構函式的調用//當對象不會再被使用的時候,會觸發解構函式//james1也是指向new NbaPlayer();$james1=$james; //$james1直接指向詹姆斯$james2=&james; //$james2相當於$james的影子,指向$james, $james再指向詹姆斯$james=null; //不需要再次設定$james2=null,因為他倆的效果是一樣的$james1=null; //任何一個賦值為null相當於刪除了一個對象的引用echo "From now on James will not be used.
";?>
Output:
In NbaPlayer Constructor
Jordan
Dribbling
Passing
In NbaPlayer Constructor
James
Destroying James
From now on James will not be used.
Destroying Jordan
以上就介紹了PHP物件導向編程——基本實踐DAY 2,包括了方面的內容,希望對PHP教程有興趣的朋友有所協助。