999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

PHP中多態的實現

2016-05-14 03:34:10溫振宏
數字技術與應用 2016年5期

溫振宏

摘要:多態指同一個實體同時具有多種形態,是面向對象程序設計(OOP)的一個重要特征。Java語言,C++語言,PHP語言都支持多態。但PHP的教材和相關書籍中很少提到多態,故很多人認為PHP不支持多態。本文以實例講解的形式證明PHP完全能夠實現多態。

關鍵詞:多態 面向對象 PHP

中圖分類號:TP393 文獻標識碼:A 文章編號:1007-9416(2016)05-0000-00

1 PHP語言介紹

PHP是一種HTML內嵌式的,用來制作動態網頁的服務器端的腳本語言。其特點是:開發周期短,穩定安全,簡單易學,免費開源,良好的跨平臺特性。PHP是一種面向對象的程序設計語言,目前已成為全球最受歡迎的五大開發語言之一。

2 多態的概念

封裝、繼承和多態是面向對象的三大特性。多態英文為Polymorphism,是指同一個實體同時具有多種不同的形態。多態是面向對象程序設計的一個重要特征,如果一個語言只支持類而不支持多態,說明該語言是基于對象的,而不是面向對象的。PHP是面向對象的Web開發語言,因此PHP是支持多態的。多態Polymorphism按字面的意思就是“多種狀態”。同一操作作用于不同的對象,可以有不同的解釋,產生不同的執行結果。在面向對象程序設計語言中,接口的多種不同的實現方式即為多態。多態性是允許你將父類設置成一個或多個其子對象相等的技術,父對象可以根據子對象的特性以不同的方式運作。簡單的說,就是允許將子類對象指向父類的引用。PHP是一種弱類型的編程語言,其變量的使用無需先聲明,即不必指明變量的數據類型,故在子類指向父類的引用時亦無需聲明對象的數據類型。

3 多態的作用

把不同的子類對象都當作父類來看,可以屏蔽不同子類對象之間的差異,寫出通用的代碼,做出通用的編程,以適應需求的不斷變化。比如某個基類繼承出多個子類,其基類有一個方法echoVoice,其子類也有這個方法,但行為不同,這些子類對象可以賦給其基類對象的引用,這樣其基類的對象就可以執行不同的操作了。實際上是通過基類來訪問其子類對象的。整體來看,多態可以減少代碼冗余,增加代碼的運行效率。

4 多態實現條件

多態的實現有三個條件:首先必須有繼承,即必須有父類(或基類)及其派生的子類。其次必須有父類的引用指向子類的對象,這是實現多態最重要的一個條件。最后必須有方法的重寫,即子類必須對父類的某些方法根據自己的需求進行重寫,方法名和參數都是相同的。

5 PHP多態舉例

首先,定義父類Animal。Animal類中包含private屬性$name,構造方法construct,獲取動物名稱的方法getAnimalName及動物發聲的方法echoVoice。

class Animal{

private $name;

function __construct($name){

$this->name = $name;

}

function getAnimalName(){

echo $this->name;

}

function echoVoice(){

echo “動物的叫聲!”;

}

}

其次,定義子類Bird及Cat。子類Bird和Cat分別繼承父類Animal。在子類Bird和Cat中重寫父類的echoVoice方法。

class Bird extends Animal{

function echoVoice(){

echo “這是鳥的叫聲!”;

}

}

class Cat extends Animal{

function echoVoice(){

echo “這是貓的叫聲!”;

}

}

然后,定義女孩類Girl。Girl類中包含private屬性$girlName,構造方法construct,獲取女孩名的方法getGirlName及養寵物的方法feedingPet方法。feedingPet方法是實現多態的一個重要環節,參數$pet會根據不同的子類對象作出不同的形態,即多態。

class Girl{

private $girlName;

function __construct($girlName){

$this->girlName = $girlName;

}

function getGirlName(){

echo $this->girlName;

}

function feedingPet($pet){

$pet->getName();

$pet->echoVoice();

}

}

最后,實例化對象$bird1,$cat1及$girl1,$girl2。通過對象$girl1和$girl2分別調用feedingPet方法,傳遞的參數分別為子類對象$bird1和$cat1。

$bird1 = new Bird(“百靈鳥”);

$cat1 = new Cat(“波斯貓”);

$girl1 = new Girl(“女孩1”);

$girl1->getGirlName();

echo “養的寵物是:”;

$girl1->feedingPet($bird1);

$girl2 = new Girl(“女孩2”);

echo “養的寵物是:”;

$girl2->feedingPet($cat1);

結果輸出:女孩1養的寵物是:百靈鳥,這是鳥的叫聲!女孩2養的寵物是:波斯貓,這是貓的叫聲!

從上面的實例看出,父類(或基類)Animal中的getAnimalName方法根據子類對象$bird1輸出百靈鳥,根據子類對象$cat1輸出波斯貓。而在子類Bird和Cat中又分別重寫了父類Aniaml中的echoVoice方法,故子類對象$bird1和$cat1分別輸出了自己的echoVoice方法中的內容:“這是鳥的叫聲!”和“這是貓的叫聲”。因此,我們可以得出結論,PHP程序設計語言中完全可以實現多態。

參考文獻

[1] 高洛峰,LAMP兄弟連.細說PHP2[M].電子工業出版社,2012.10.

主站蜘蛛池模板: 天天色天天综合| 国产福利观看| 香蕉精品在线| 麻豆精品在线| 在线观看91香蕉国产免费| 欧美三級片黃色三級片黃色1| 亚洲第一页在线观看| 国产人在线成免费视频| 色综合久久88色综合天天提莫| 亚洲av无码专区久久蜜芽| 欧美精品在线视频观看| 国产精品亚洲va在线观看| 亚洲欧美一区二区三区麻豆| 呦视频在线一区二区三区| 黄色片中文字幕| 国产人碰人摸人爱免费视频| 激情综合网址| 日韩经典精品无码一区二区| 亚洲天堂2014| 国产成人一区| 久久亚洲AⅤ无码精品午夜麻豆| 久久精品人人做人人综合试看| 国产在线一区视频| 国产喷水视频| 波多野结衣亚洲一区| 久久亚洲中文字幕精品一区| 亚洲第一区欧美国产综合 | 国产成人精品免费视频大全五级| hezyo加勒比一区二区三区| 美女无遮挡拍拍拍免费视频| av免费在线观看美女叉开腿| 亚洲国产一区在线观看| 国产精品入口麻豆| 97免费在线观看视频| 伊人久久福利中文字幕| 欧美日韩国产高清一区二区三区| 国产在线一区二区视频| 国产第一页免费浮力影院| 欧美在线伊人| 黄色污网站在线观看| 大陆国产精品视频| 99成人在线观看| 国产污视频在线观看| 日韩精品一区二区三区大桥未久 | 国产成人精品18| 国产H片无码不卡在线视频| 国产成人精品视频一区视频二区| 日韩高清无码免费| 免费va国产在线观看| 91精品国产麻豆国产自产在线| 国产欧美另类| 亚洲精品第一在线观看视频| 日韩亚洲综合在线| 国产成人精品午夜视频'| 激情爆乳一区二区| 综合网天天| 久草视频精品| 国产日产欧美精品| 国产人前露出系列视频| 亚洲天堂高清| 国产精品无码AV中文| 真实国产乱子伦高清| 日本午夜影院| 国产精品免费福利久久播放| 美女内射视频WWW网站午夜| 制服丝袜无码每日更新| 欧美一级特黄aaaaaa在线看片| 91在线丝袜| 91福利一区二区三区| 亚洲精品片911| 国产麻豆精品久久一二三| 国产视频 第一页| 亚洲精品无码av中文字幕| 欧美久久网| 日韩欧美国产精品| 在线精品亚洲国产| 日韩欧美视频第一区在线观看 | 亚洲人成日本在线观看| 成人午夜网址| 91精品免费高清在线| 日韩AV无码一区| 狠狠色噜噜狠狠狠狠色综合久|