物件導向(Object Oriented,OO)是軟體開發方法。物件導向的概念和應用已超越了程式設計和軟體開發,擴充套件到如資料庫系統、互動式介面、應用結構、應用平台、分散式系統、網路管理結構、CAD技術、人工智慧等領域。下面我們為大家介紹一下php中類與物件的關係。
推薦教學:PHP視訊教學
一、類和物件的關係
類的實體化結果是物件,而物件的抽象就是類。在開發過程中,我們通常都是先抽象(幻想)出一個類,再用該類去建立物件(實現幻想的內容)。在程式中,直接使用的是我們(實現幻想)的物件,而不是抽象(幻想)的類。
二、物件導向和程序導向
1、什麼是程序導向
程序導向就好比一個人 自己洗衣服、做飯,什麼事情都是自己解決
2、什麼是物件導向
物件導向就是那個人有了物件,讓物件去洗衣服、做飯。
三、如何抽象一個類
class 類名{ 成員屬性: 姓名、性別、年齡、身高、體重 成員方法: 說話、走路、學習、吃飯、開車 }
所有的類都是從成員屬性和成員方法這兩方面去宣告,屬性和方法都是類中的成員,所以屬性又叫做成員屬性,方法又叫做成員方法
1、成員屬性 -->特徵
在物件中直接宣告變數就稱為成員屬性,可以在類中宣告多個成員變數,即物件中可以有多個成員屬性
class Person{ var $name; //宣告第一個成員屬性,用於儲存人的名字 var age; //宣告第一個成員屬性,用於儲存人的年齡 var $sex; //宣告第一個成員屬性,用於儲存人的性別 }
2、成員方法 -->功能
class Person{ var $name; //宣告第一個成員屬性,用於儲存人的名字 var $age; //宣告第一個成員屬性,用於儲存人的年齡 var $sex; //宣告第一個成員屬性,用於儲存人的性別 function say(){ //宣告第一個方法 echo '人在說話'; //定義人說話的功能 } function run(){ //宣告第二個方法 echo '人在跑步'; //定義人跑步的功能 } function eat(){ //宣告第三個方法 echo '人在吃飯'; //定義人吃飯的功能 } }
物件就是把相關的屬性和方法組織在一起。其中成員屬性和成員方法都是可以選的,可以只有成員屬性,也可以只有成員方法,也可以沒有成員。
四、範例化物件
一個類可以宣告多個物件,讓物件去存取成員屬性和成員方法
class Person{ var $name; //宣告第一個成員屬性,用於儲存人的名字 var $age; //宣告第一個成員屬性,用於儲存人的年齡 var $sex; //宣告第一個成員屬性,用於儲存人的性別 function say(){ //宣告第一個方法 echo '人在說話'; //定義人說話的功能 } function run(){ //宣告第二個方法 echo '人在跑步'; //定義人跑步的功能 } function eat(){ //宣告第三個方法 echo '人在吃飯'; //定義人吃飯的功能 } } // 範例化物件 $sqyy = new Person(); //成員屬性賦值 $sqyy -> name = "伊川"; $sqyy -> sex = "男"; $sqyy -> age = 26; //存取物件中的成員方法 $sqyy->eat();
五、特殊的物件參照 "$this"
上面的範例中,我們是範例化一個物件之後再給成員屬性賦值和存取成員方法的。那麼 $this也可以在成員方法中使用,代表的是當前的這個物件
成員方法呼叫前的物件是誰,$this就代表誰
class Person{ var $name; function info(){ $this ->name = "SQYY"; } }
六、構造方法與解構方法
1、構造方法
構造方法是物件建立完成後第一個被物件自動呼叫的方法,會初始化這個物件,當使用new關鍵字範例化物件時會自動觸發。
<?php class Person{ //下面是宣告人的成員屬性,都是沒有初始值的,在建立物件時,使用構造方法賦給初始值 var $name; //定義人的名字 var $sex; //定義人的性別 var $age; //定義人的年齡 function __construct($name="SQYY",$sex="男",$age=1){ $this -> name = $name; //在建立物件時,使用傳入的引數$name為成員屬性 $this->name賦初值 $this -> sex = $sex; //在建立物件時,使用傳入的引數$sex為成員屬性 $this->sex賦初值 $this -> age = $age; //在建立物件時,使用傳入的引數$sex為成員屬性 $this->age賦初值 } //下面宣告人的成員方法 function say(){ echo "我的名字:" .$this ->name. " ,性別:" .$this -> sex ." 年齡" .$this ->age. "。<br>"; } } $person1 = new Person(); //建立物件$person1時會自動執行構造方法,預設傳參 $person2 = new Person('張三'); //建立物件$person2時會自動執行構造方法,傳入第一個引數,其他預設傳參 $person3 = new Person('李四','男'); //建立物件$person3時會自動執行構造方法,傳入前兩個引數,其他預設傳參 $person4 = new Person('王五','女','20'); //建立物件$person4時會自動執行構造方法,傳入所有引數 $person1 ->say(); $person2 ->say(); $person3 ->say(); $person4 ->say(); ?>
執行結果
2、解構方法
物件在銷毀之前最後一個被物件自動呼叫的方法,先建立 傳入變數後銷毀
<?php header('Content-type:text/html;charset=utf-8'); // 定義一個汽車的類 class car{ // 成員屬性 public $name; public $color; //構造方法 public function __construct($name,$color){ $this->name = $name; $this->color = $color; echo "你建立了".$this->name.'<br>'; } // 解構方法 public function __destruct(){ echo "你銷毀了".$this->name.'<br>'; } } // 範例化物件 $hanma = new car('悍馬','粉色','H2'); $bmw = new car('寶馬','紅色','X7'); $benchi = new car('奔馳','黑色','s600'); // unset($bmw); $bmw = '1111'; ?>
執行結果
如果我們不參照變數,建立完物件之後就會銷毀。
<?php header('Content-type:text/html;charset=utf-8'); // 定義一個汽車的類 class car{ // 成員屬性 public $name; public $color; //構造方法 public function __construct($name,$color){ $this->name = $name; $this->color = $color; echo "你建立了".$this->name.'<br>'; } // 解構方法 public function __destruct(){ echo "你銷毀了".$this->name.'<br>'; } } // 範例化物件 new car('悍馬','粉色','H2'); new car('寶馬','紅色','X7'); new car('奔馳','黑色','s600'); ?>
執行結果
以上就是php類和物件的關係的詳細內容,更多請關注TW511.COM其它相關文章!