最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

PHP5多態(tài)性與動(dòng)態(tài)綁定介紹

 更新時(shí)間:2015年04月03日 10:31:04   投稿:junjie  
這篇文章主要介紹了PHP5多態(tài)性與動(dòng)態(tài)綁定介紹,本文主要講解了什么是多態(tài)性和什么是動(dòng)態(tài)綁定,并給出相應(yīng)實(shí)例,需要的朋友可以參考下

什么是多態(tài)性?

多態(tài)性是繼數(shù)據(jù)抽象和繼承后,面向?qū)ο笳Z言的第三個(gè)特征。從字面上理解,多態(tài)的意思是“多種形態(tài)”,簡單來說,多態(tài)是具有表現(xiàn)多種形態(tài)的能力的特征,在OO中是指“語言具有根據(jù)對象的類型以不同方式處理之,特別是重載方法和繼承類這種形式”的能力。多態(tài)被認(rèn)為是面向?qū)ο笳Z言的必備特性。

例如:

我們創(chuàng)建一個(gè)接口 Shape,定義一個(gè)空的方法 draw(),那么所有的實(shí)現(xiàn)類都必須實(shí)現(xiàn)這個(gè)方法,假設(shè) Shape 有兩個(gè)實(shí)現(xiàn)類:Triangle 和 Rectangle,我們雖然無法通過類似這樣的 Java 代碼來詮釋 PHP 的多態(tài)性:

復(fù)制代碼 代碼如下:

Shape s = new Triangle();
s.draw();

不過 PHP5.1 中引入了 Type Hinting,可以限制函數(shù)(或者方法)的參數(shù)類型,我們使用這個(gè)特性來演示 PHP5 的多態(tài)性。

參考如下的代碼:

復(fù)制代碼 代碼如下:

class TestPolymorphism {
    public function drawNow(Shape $shape) {
        $shape->draw();
    }
}

函數(shù) drawNow() 中限制傳入的參數(shù)類型必須為 Shape 接口派生類的對象,這里我們傳遞給 drawNow() 的參數(shù)可能是 Triangle 或者 Rectangle 的對象,也可能是其它的 Shape 接口的派生類對象,比如 Circle 等等,簡單的說 drawNow() 的參數(shù)類型是無法預(yù)知的,$shape->draw() 的行為最終由傳入的參數(shù)的具體類型來決定,比如如果傳入 Triangle 的對象,那么就調(diào)用 Triangle 的 draw() 方法,如果傳入 Rectangle 的對象,就調(diào)用 Rectangle 的 draw() 方法。這種在運(yùn)行時(shí)刻根據(jù)傳遞的對象參數(shù)的類型來決定調(diào)用哪一個(gè)對象的方法的行為就可以稱之為多態(tài)。

Shape 也可以是一個(gè)抽象基類或者是非抽象的基類,上面的論述都是成立的。區(qū)別在于接口僅定義一套實(shí)現(xiàn)類必須遵守的規(guī)則,而使用基類則可以為派生類提供一些缺省的行為。

參考代碼如下:

復(fù)制代碼 代碼如下:

/**
 * Shape Interface
 *
 * @version 1.0
 * @copyright
 */
interface Shape {
    public function draw();
}
 
/**
 * Triangle
 *
 * @uses Shape
 * @version 1.0
 * @copyright
 */
class Triangle implements Shape {  
    public function draw() {
        print "Triangle::draw()\n";
    }
}
 
/**
 * Rectangle
 *
 * @uses Shape
 * @version 1.0
 * @copyright
 */
class Rectangle implements Shape {
    public function draw() {
        print "Rectangle::draw()\n";
    }
}
 
/**
 * Test Polymorphism
 *
 * @version 1.0
 * @copyright
 */
class TestPoly {
    public function drawNow(Shape $shape) {
        $shape->draw();
    }
}
 
 
$test = new TestPoly();
$test->drawNow(new Triangle());
$test->drawNow(new Rectangle());
 
/* vim: set expandtab tabstop=4 shiftwidth=4: */

什么是動(dòng)態(tài)綁定?

HaoHappy 翻譯的 PHP5 Object Pattern 第九節(jié)中有介紹:

除了限制訪問,訪問方式也決定哪個(gè)方法將被子類調(diào)用或哪個(gè)屬性將被子類訪問。 函數(shù)調(diào)用與函數(shù)本身的關(guān)聯(lián),以及成員訪問與變量內(nèi)存地址間的關(guān)系,稱為綁定。

另有的說法:

綁定(binding):將方法的調(diào)用連到方法本身被稱為綁定,當(dāng)綁定發(fā)生在編譯期,被稱做靜態(tài)綁定,而在程序運(yùn)行的時(shí)候根據(jù)對象的類型來決定該綁定方法的成為動(dòng)態(tài)綁定。

PHP 是一種動(dòng)態(tài)語言,使用動(dòng)態(tài)綁定。無須考慮采取何種綁定策略,因?yàn)橐黄鸲际亲詣?dòng)的。

相關(guān)文章

  • 一文搞懂PHP中的DI依賴注入

    一文搞懂PHP中的DI依賴注入

    依賴注入DI 其實(shí)本質(zhì)上是指對類的依賴通過構(gòu)造器完成 自動(dòng)注入。本文將通過一些示例帶大家深入了解一下PHP中的DI依賴注入,需要的可以參考一下
    2022-08-08
  • php創(chuàng)建圖像具體步驟

    php創(chuàng)建圖像具體步驟

    本文主要介紹了php創(chuàng)建圖像的具體步驟。具有很好的參考價(jià)值。下面跟著小編一起來看下吧
    2017-03-03
  • 學(xué)習(xí)php設(shè)計(jì)模式 php實(shí)現(xiàn)工廠模式(factory)

    學(xué)習(xí)php設(shè)計(jì)模式 php實(shí)現(xiàn)工廠模式(factory)

    這篇文章主要介紹了php設(shè)計(jì)模式中的工廠模式,使用php實(shí)現(xiàn)工廠模式,感興趣的小伙伴們可以參考一下
    2015-12-12
  • php基于SQLite實(shí)現(xiàn)的分頁功能示例

    php基于SQLite實(shí)現(xiàn)的分頁功能示例

    這篇文章主要介紹了php基于SQLite實(shí)現(xiàn)的分頁功能,結(jié)合具體實(shí)例形式分析了php操作SQLite數(shù)據(jù)庫實(shí)現(xiàn)分頁功能的相關(guān)技巧與注意事項(xiàng),需要的朋友可以參考下
    2017-06-06
  • PHP is_numeric()函數(shù)用法詳解

    PHP is_numeric()函數(shù)用法詳解

    is_numeric()函數(shù)是PHP中的內(nèi)置函數(shù),用于檢查傳入函數(shù)中作為參數(shù)的變量是數(shù)字還是數(shù)字字符串,該函數(shù)返回一個(gè)布爾值,本文就給大家講講PHP is_numeric()函數(shù)使用方法,需要的朋友可以參考下
    2023-07-07
  • PHP ajax 分頁類代碼

    PHP ajax 分頁類代碼

    不錯(cuò)的ajax分頁類
    2008-11-11
  • php實(shí)現(xiàn)的農(nóng)歷算法實(shí)例

    php實(shí)現(xiàn)的農(nóng)歷算法實(shí)例

    這篇文章主要介紹了php實(shí)現(xiàn)的農(nóng)歷算法,較為詳細(xì)的分析了農(nóng)歷算法的原理與php實(shí)現(xiàn)技巧,非常具有實(shí)用價(jià)值,需要的朋友可以參考下
    2015-08-08
  • 深入php var_dump()函數(shù)的詳解

    深入php var_dump()函數(shù)的詳解

    本篇文章是對php var_dump()函數(shù)進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下
    2013-06-06
  • PHP框架Swoole定時(shí)器Timer特性分析

    PHP框架Swoole定時(shí)器Timer特性分析

    這篇文章主要介紹了PHP框架Swoole定時(shí)器Timer特性分析,在PHP項(xiàng)目開發(fā)中具有不錯(cuò)的實(shí)用價(jià)值,需要的朋友可以參考下
    2014-08-08
  • PHP快速排序quicksort實(shí)例詳解

    PHP快速排序quicksort實(shí)例詳解

    這篇文章主要介紹了PHP快速排序quicksort實(shí)現(xiàn)方法,結(jié)合實(shí)例形式分析了快速排序的原理及php實(shí)現(xiàn)快速排序的相關(guān)操作技巧,需要的朋友可以參考下
    2016-09-09

最新評論

晋州市| 东莞市| 扎兰屯市| 漯河市| 凌源市| 丹江口市| 岳西县| 凯里市| 修武县| 金沙县| 贵南县| 恭城| 湾仔区| 双江| 资阳市| 曲阜市| 项城市| 天全县| 泸水县| 衡阳市| 额尔古纳市| 凤阳县| 墨玉县| 镇江市| 嘉义市| 阳泉市| 天门市| 剑阁县| 财经| 南安市| 延安市| 徐州市| 安阳县| 瑞丽市| 武清区| 铜陵市| 罗定市| 阜南县| 济宁市| 武川县| 江都市|