亚洲精品中文字幕无乱码_久久亚洲精品无码AV大片_最新国产免费Av网址_国产精品3级片

php語言

PHP中多態(tài)如何實(shí)現(xiàn)

時(shí)間:2024-09-04 06:08:18 php語言 我要投稿
  • 相關(guān)推薦

PHP中多態(tài)如何實(shí)現(xiàn)

  PHP是一種HTML內(nèi)嵌式的,用來制作動(dòng)態(tài)網(wǎng)頁的服務(wù)器端的腳本語言。以下是百分網(wǎng)小編整理的PHP中多態(tài)如何實(shí)現(xiàn)的內(nèi)容,歡迎學(xué)習(xí)!

  1 PHP語言介紹

  PHP是一種HTML內(nèi)嵌式的,用來制作動(dòng)態(tài)網(wǎng)頁的服務(wù)器端的腳本語言。其特點(diǎn)是:開發(fā)周期短,穩(wěn)定安全,簡單易學(xué),免費(fèi)開源,良好的跨平臺(tái)特性。PHP是一種面向?qū)ο蟮某绦蛟O(shè)計(jì)語言,目前已成為全球最受歡迎的五大開發(fā)語言之一。

  2 多態(tài)的概念

  封裝、繼承和多態(tài)是面向?qū)ο蟮娜筇匦。多態(tài)英文為Polymorphism,是指同一個(gè)實(shí)體同時(shí)具有多種不同的形態(tài)。多態(tài)是面向?qū)ο蟪绦蛟O(shè)計(jì)的一個(gè)重要特征,如果一個(gè)語言只支持類而不支持多態(tài),說明該語言是基于對象的,而不是面向?qū)ο蟮。PHP是面向?qū)ο蟮腤eb開發(fā)語言,因此PHP是支持多態(tài)的。多態(tài)Polymorphism按字面的意思就是“多種狀態(tài)”。同一操作作用于不同的對象,可以有不同的解釋,產(chǎn)生不同的執(zhí)行結(jié)果。在面向?qū)ο蟪绦蛟O(shè)計(jì)語言中,接口的多種不同的實(shí)現(xiàn)方式即為多態(tài)。多態(tài)性是允許你將父類設(shè)置成一個(gè)或多個(gè)其子對象相等的技術(shù),父對象可以根據(jù)子對象的特性以不同的方式運(yùn)作。簡單的說,就是允許將子類對象指向父類的引用。PHP是一種弱類型的編程語言,其變量的使用無需先聲明,即不必指明變量的數(shù)據(jù)類型,故在子類指向父類的引用時(shí)亦無需聲明對象的數(shù)據(jù)類型。

  3 多態(tài)的作用

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

  4 多態(tài)實(shí)現(xiàn)條件

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

  5 PHP多態(tài)舉例

  首先,定義父類Animal。Animal類中包含private屬性$name,構(gòu)造方法construct,獲取動(dòng)物名稱的方法getAnimalName及動(dòng)物發(fā)聲的方法echoVoice。

  class Animal{

  private $name;

  function __construct($name){

  $this->name = $name;

  }

  function getAnimalName(){

  echo $this->name;

  }

  function echoVoice(){

  echo “動(dòng)物的叫聲!”;

  }

  }

  其次,定義子類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,構(gòu)造方法construct,獲取女孩名的方法getGirlName及養(yǎng)寵物的方法feedingPet方法。feedingPet方法是實(shí)現(xiàn)多態(tài)的一個(gè)重要環(huán)節(jié),參數(shù)$pet會(huì)根據(jù)不同的子類對象作出不同的形態(tài),即多態(tài)。

  class Girl{

  private $girlName;

  function __construct($girlName){

  $this->girlName = $girlName;

  }

  function getGirlName(){

  echo $this->girlName;

  }

  function feedingPet($pet){

  $pet->getName();

  $pet->echoVoice();

  }

  }

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

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

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

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

  $girl1->getGirlName();

  echo “養(yǎng)的寵物是:”;

  $girl1->feedingPet($bird1);

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

  echo “養(yǎng)的寵物是:”;

  $girl2->feedingPet($cat1);

  結(jié)果輸出:女孩1養(yǎng)的寵物是:百靈鳥,這是鳥的叫聲!女孩2養(yǎng)的寵物是:波斯貓,這是貓的叫聲!

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


更多PHP相關(guān)文章推薦:

1.phpStorm 2017特色

2.php如何禁用eval函數(shù)

3.10個(gè)技巧優(yōu)化PHP程序Laravel 5框架

4.如何選擇PHP版本

5.編譯chm格式PHP手冊的方法

6.PHPMYADMIN簡明安裝教程

7.數(shù)據(jù)庫設(shè)計(jì)和訪問數(shù)據(jù)庫的 PHP 代碼中出現(xiàn)的五個(gè)常見問題

8.php內(nèi)核分析之全局變量

9.php實(shí)現(xiàn)讀取手機(jī)客戶端瀏覽器的.類

10.自學(xué)PHP方法

【PHP中多態(tài)如何實(shí)現(xiàn)】相關(guān)文章:

PHP中實(shí)現(xiàn)頁面跳轉(zhuǎn)12-06

php如何實(shí)現(xiàn)驗(yàn)證碼11-26

PHP如何使用curl實(shí)現(xiàn)數(shù)據(jù)抓取03-24

php中怎么實(shí)現(xiàn)回刪功能03-29

php中實(shí)現(xiàn)回刪功能實(shí)例03-30

如何實(shí)現(xiàn)PHP獲取表單數(shù)據(jù)與HTML嵌入PHP腳本03-25

PHP中讀取大文件實(shí)現(xiàn)方法詳解11-30

如何解決PHP無法實(shí)現(xiàn)多線程的問題03-02

PHP如何實(shí)現(xiàn)注冊后郵箱驗(yàn)證和帳號激活03-13