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