PHP物件導向編程——基本實踐DAY 2

來源:互聯網
上載者:User
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教程有興趣的朋友有所協助。

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.