国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - PHP教程 - PHP5多態性與動態綁定介紹

PHP5多態性與動態綁定介紹

2020-09-16 16:47PHP教程網 PHP教程

這篇文章主要介紹了PHP5多態性與動態綁定介紹,本文主要講解了什么是多態性和什么是動態綁定,并給出相應實例,需要的朋友可以參考下

什么是多態性?

多態性是繼數據抽象和繼承后,面向對象語言的第三個特征。從字面上理解,多態的意思是“多種形態”,簡單來說,多態是具有表現多種形態的能力的特征,在OO中是指“語言具有根據對象的類型以不同方式處理之,特別是重載方法和繼承類這種形式”的能力。多態被認為是面向對象語言的必備特性。

例如:

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

復制代碼 代碼如下:

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


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

 

參考如下的代碼:

復制代碼 代碼如下:

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


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

 

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

參考代碼如下:

復制代碼 代碼如下:

/**
 * 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: */

 

什么是動態綁定?

HaoHappy 翻譯的 PHP5 Object Pattern 第九節中有介紹:

除了限制訪問,訪問方式也決定哪個方法將被子類調用或哪個屬性將被子類訪問。 函數調用與函數本身的關聯,以及成員訪問與變量內存地址間的關系,稱為綁定。

另有的說法:

綁定(binding):將方法的調用連到方法本身被稱為綁定,當綁定發生在編譯期,被稱做靜態綁定,而在程序運行的時候根據對象的類型來決定該綁定方法的成為動態綁定。

PHP 是一種動態語言,使用動態綁定。無須考慮采取何種綁定策略,因為一起都是自動的。

延伸 · 閱讀

精彩推薦
Weibo Article 1 Weibo Article 2 Weibo Article 3 Weibo Article 4 Weibo Article 5 Weibo Article 6 Weibo Article 7 Weibo Article 8 Weibo Article 9 Weibo Article 10 Weibo Article 11 Weibo Article 12 Weibo Article 13 Weibo Article 14 Weibo Article 15 Weibo Article 16 Weibo Article 17 Weibo Article 18 Weibo Article 19 Weibo Article 20 Weibo Article 21 Weibo Article 22 Weibo Article 23 Weibo Article 24 Weibo Article 25 Weibo Article 26 Weibo Article 27 Weibo Article 28 Weibo Article 29 Weibo Article 30 Weibo Article 31 Weibo Article 32 Weibo Article 33 Weibo Article 34 Weibo Article 35 Weibo Article 36 Weibo Article 37 Weibo Article 38 Weibo Article 39 Weibo Article 40
主站蜘蛛池模板: 国产精品中文在线 | 日韩中文字幕一区二区 | 亚洲精品成人悠悠色影视 | 成年人免费网站 | 精品国产一区二区三区忘忧草 | 成人国内精品久久久久一区 | 欧美.com| 久久久精品亚洲 | 最新国产在线 | 欧美日韩专区 | 婷婷亚洲五月 | 久久久成人精品 | 日韩中文字幕一区二区三区 | 狠狠干av| 成人精品在线观看 | 狠狠久久综合 | 成人在线小视频 | 日韩一区二区三区在线视频 | 精品国产综合 | 日韩高清中文字幕 | 自拍偷拍亚洲一区 | 中文字幕三区 | 91久久精品日日躁夜夜躁国产 | 一本综合久久 | 日本a视频在线观看 | 天天综合视频网 | 爱爱网址 | 亚洲一区中文字幕 | 久久久国产一区二区三区 | 久久色av| 草草成人 | 久久久蜜臀 | 中文字幕av第一页 | 日韩在线成人 | 黄色一级免费大片 | 欧美精品在线一区 | 成人a级片在线观看 | 成人在线观看免费爱爱 | 久久久高清| 精品成人网 | 免费一级片 |