php基础教程 第十一步 面向对象
面相對象
面向?qū)ο蟪绦蛟O(shè)計簡稱OOP(Object-oriented programming)。是一種類型的抽象,或者說是一種類型以編碼的方式進行描述。概念上理解并不能直觀的說明問題,以下將會有示例為讀者直觀的感受面向?qū)ο蟆?/p>
類代表一個類別,例如人、車子、動物、液體都屬于一個類,在php中我們用class表示一個類。
對象指這一個類的實例化,例如人這一個類,有一個具體,如小明是一個人類,小明就是這一個類別的具體;動物也是一個類,對象可以為猴子,猩猩,馬等;液體也是一個類,水屬于液體這一個類別,牛奶也屬于液體這一個類別。
成員函數(shù)一般指這一個類中的一些屬性,例如人這個類別,有年齡、身高、性別、頭發(fā)等這一些屬性;液體有顏色、密度等屬性。
子類指一個父類的派生,也就是人這一個類屬于動物,動物這一個類別就是人類的父類,人類這一個類別指動物的子類。
父類是一個類的父親,以上以說明。
類方法可以指類里面的一些接口動作,例如人可以吃飯、人可以走路等。
一個最為簡單的面向?qū)ο笫纠?/h2>
接下來看一下一個簡單的類定義:
<?php class Human {public $sex;public $hair; } ?>以上使用class 這個關(guān)鍵字定義了一個Human類,Human是一個類的名稱,就跟函數(shù)名稱一樣可以自己設(shè)置,Human的意思為人,這里定義的是一個人的類別。人的屬性有名字和年齡,在類名后的花括號中,編寫了 public $sex; 與 public $hair;方法,public 是對變量以及方法的修飾,表示這個變量或者方法是公開的。就像你的性別,外人可以從外貌上分表你是男是女,這些屬性是公開的,可以使用public進行修飾。除了public方法可以修飾公開的屬性或者方法外,還可以使用private 修飾一些私有的方法,例如你的胃消化的方法,只有你自己可以調(diào)用,外人是使用不了,這個方法可以使用private進行修飾(當(dāng)然,這個比喻并不是很好的說明這個問題,接下來將會用示例進行說明)。
以下示例將Human這個類進行實例化:
這個時候只是實例化了這個類,$Xiaoming 就是Human這個類的對象。我們可以為這個對象設(shè)置值。設(shè)置值需要添加一些方法:
<?php class Human {public $sex;public $hair;public function set_Sex($val){$this->sex=$val;}public function set_Hair($val){$this->hair=$val;} }$Xiaoming=new Human(); ?>以上代碼中 public function set_Sex 定義了一個函數(shù),函數(shù)名為 set_Sex,使用了public進行修飾,表示這個函數(shù)可以直接調(diào)用;這個函數(shù)接收一個參數(shù),參數(shù)名為 $val。在set_Sex 函數(shù)的花括號中,代碼為 $this->sex=$val;,$this為當(dāng)前對象,指當(dāng)前類,->表示一個指向,$this->sex就為當(dāng)前類中的sex成員屬性(變量),賦值為傳入的$val。另外一個函數(shù) set_Hair 與 set_Sex 函數(shù)形式一致,不再贅述。
接下來看如何調(diào)用這兩個方法進行值的設(shè)定:
以上代碼中使用對象 $Xiaoming 用箭頭-> 運算符調(diào)用 set_Sex 函數(shù),并且傳入了一個值為 nan(男女的拼音):$Xiaoming->set_Sex('nan');,set_Hair 函數(shù)的調(diào)用方法一致。
接下來新建兩個方法。使用這兩個方法調(diào)用變量,查看是否更改:
以上代碼中,使用 get_Sex() 方法獲取性別,使用 get_Hair 獲取是否有頭發(fā)。在函數(shù)內(nèi)使用return 返回了 $this->sex 的值。$this->sex 表示當(dāng)前對象中的sex 成員屬性。隨后使用echo 進行輸出。
結(jié)果如下:
private
我們可以在類中修改 set_Sex 的修飾public 為 private,使用 private 后外部調(diào)用將會報錯:
<?php class Human {public $sex;public $hair;private function set_Sex($val){$this->sex=$val;}public function set_Hair($val){$this->hair=$val;}public function get_Sex(){return $this->sex;}public function get_Hair(){return $this->hair;} }$Xiaoming=new Human(); $Xiaoming->set_Sex('nan'); $Xiaoming->set_Hair('y');echo $Xiaoming->get_Sex(); echo ' '; echo $Xiaoming->get_Hair(); ?>運行報錯如下:
但是在類內(nèi)部中是可以調(diào)用的,在以下示例中,新建了一個 printInfo 函數(shù),使用private 進行修飾,在外部調(diào)用不了,但是在內(nèi)部還是可以調(diào)用的:修改一下查看示例:
在 printInfo 函數(shù)中,傳入了一個 $val 參數(shù),隨后輸出了這個參數(shù)。 printInfo 方法調(diào)用在 set_Sex 方法中,傳入了 $val,用 printInfo 作為提示。
結(jié)果如下:
總結(jié)
以上是生活随笔為你收集整理的php基础教程 第十一步 面向对象的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: php基础教程 第十步 阶段性知识补充
- 下一篇: php基础教程 第十一步 面向对象补充