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

php實(shí)現(xiàn)parent調(diào)用父類的構(gòu)造方法與被覆寫的方法

 更新時(shí)間:2015年02月11日 15:06:38   作者:woshisap  
這篇文章主要介紹了php實(shí)現(xiàn)parent調(diào)用父類的構(gòu)造方法與被覆寫的方法,在上一篇關(guān)于使用類繼承解決代碼重復(fù)問(wèn)題的基礎(chǔ)上,進(jìn)一步分析了parent調(diào)用父類的構(gòu)造方法與被覆寫的相關(guān)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下

本文實(shí)例講述了php實(shí)現(xiàn)parent調(diào)用父類的構(gòu)造方法與被覆寫的方法。分享給大家供大家參考。具體分析如下:

覆寫:被重新設(shè)計(jì)。

在子類中定義構(gòu)造方法時(shí),需要傳遞參數(shù)給父類的構(gòu)造方法,否則我們得到的可能是一個(gè)構(gòu)造不完整的對(duì)象。

要調(diào)用父類的方法,首先要找到一個(gè)引用類本身的途徑:句柄(handle),PHP為此提供了parent關(guān)鍵字。
 
parent 調(diào)用父類的構(gòu)造方法

要引用一個(gè)類而不是對(duì)象的方法,可以使用 ::(兩個(gè)冒號(hào)),而不是 ->。

所以, parent::__construct() 以為著調(diào)用父類的 __construct() 方法。

修改上篇《使用類繼承解決代碼重復(fù)等問(wèn)題》中的代碼,讓每個(gè)類只處理自己的數(shù)據(jù):

復(fù)制代碼 代碼如下:
<?php
header('Content-type:text/html;charset=utf-8');
// 從這篇開(kāi)始,類名首字母一律大寫,規(guī)范寫法
class ShopProduct{    // 聲明類
public $title; // 聲明屬性
public $producerMainName;
public $producerFirstName;
public $price;
function __construct($title,$firstName,$mainName,$price){
$this -> title = $title;    // 給屬性 title 賦傳進(jìn)來(lái)的值
$this -> producerFirstName= $firstName;
$this -> producerMainName = $mainName;
$this -> price= $price;
}
function getProducer(){    // 聲明方法
return "{$this -> producerFirstName }"."{$this -> producerMainName}";
}
function getSummaryLine(){
$base = "{$this->title}( {$this->producerMainName},";
$base .= "{$this->producerFirstName} )";
return $base;
}
}
class CdProduct extends ShopProduct {
public $playLenth;
function __construct($title,$firstName,$mainName,$price,$playLenth){
parent::__construct($title,$firstName,$mainName,$price);
$this -> playLenth= $playLenth;
}
function getPlayLength(){
return $this -> playLength;
}
function getSummaryLine(){
$base = "{$this->title}( {$this->producerMainName},";
$base .= "{$this->producerFirstName} )";
$base .= ":playing time - {$this->playLength} )";
return $base;
}
}
// 定義類
class BookProduct extends ShopProduct {
public $numPages;
function __construct($title,$firstName,$mainName,$price,$numPages){
parent::__construct($title,$firstName,$mainName,$price);
$this -> numPages= $numPages;
}
function getNumberOfPages(){
return $this -> numPages;
}
function getSummaryLine(){
$base = "{$this->title}( {$this->producerMainName},";
$base .= "{$this->producerFirstName} )";
$base .= ":page cont - {$this->numPages} )";
return $base;
}
}
 
?>

 
每個(gè)子類都會(huì)在設(shè)置自己的屬性前調(diào)用父類的構(gòu)造方法?;悾ǜ割悾┈F(xiàn)在僅知道自己的數(shù)據(jù),而我們也應(yīng)該盡量避免告訴父類任何關(guān)于子類的信息,這是一條經(jīng)驗(yàn)規(guī)則,大家想想如果某個(gè)子類的信息應(yīng)該是”保密“的,結(jié)果父類知道它的信息,其它子類可以繼承,這樣子類的信息就不保密了。

parent 調(diào)用父類被覆寫的方法

parent 關(guān)鍵字可以在任何覆寫父類的方法中使用。覆寫一個(gè)父類的方法時(shí),我們并不希望刪除父類的功能,而是拓展它,通過(guò)在當(dāng)前對(duì)象中調(diào)用父類的方法可以達(dá)到這個(gè)目的。
  看看上面的代碼,可以發(fā)現(xiàn)兩個(gè)子類中 getSummaryLine() 方法中重復(fù)了許多代碼,我們應(yīng)該利用 ShopProduct 類中已經(jīng)存在的功能,而不是重復(fù)開(kāi)發(fā):

復(fù)制代碼 代碼如下:
// 父類:ShopProduct
function getSummaryLine(){
$base = "{$this->title}( {$this->producerMainName},";
$base .= "{$this->producerFirstName} )";
return $base;
}
// 子類:CdProduct
function getSummaryLine(){
$base = parent::getSummaryLine();
$base .= ":playing time - {$this->playLength} )";
return $base;
}
// 子類:BookProduct
function getSummaryLine(){
$base = parent::getSummaryLine();
$base .= ":page cont - {$this->numPages} )";
return $base;
}

 
我們?cè)诟割?ShopProduct 中為 getSummaryLine() 方法完成了”核心“功能,接著在子類中簡(jiǎn)單的調(diào)用父類的方法,然后增加更多數(shù)據(jù)到摘要字符串,方法的拓展就實(shí)現(xiàn)了。

希望本文所述對(duì)大家的php程序設(shè)計(jì)有所幫助。

相關(guān)文章

  • php生成縮略圖質(zhì)量較差解決方法代碼示例

    php生成縮略圖質(zhì)量較差解決方法代碼示例

    這篇文章主要介紹了php生成縮略圖質(zhì)量較差解決方法代碼示例,具有一定借鑒價(jià)值,需要的朋友可以參考下。
    2017-12-12
  • PHP CKEditor 上傳圖片實(shí)現(xiàn)代碼

    PHP CKEditor 上傳圖片實(shí)現(xiàn)代碼

    CKEditor的原包中沒(méi)有包含圖片的上傳服務(wù)器端處理文件,其公司的另一款開(kāi)源產(chǎn)品:CKFinder做了很好的補(bǔ)充。但是要下載這個(gè)源代碼再進(jìn)行配置,雖然方便了很多,但是僅僅為了上傳圖片,卻要使用這么大的整個(gè)系統(tǒng)來(lái)使用,確實(shí)有點(diǎn)大材小用。
    2009-11-11
  • Apache服務(wù)器無(wú)法使用的解決方法

    Apache服務(wù)器無(wú)法使用的解決方法

    本篇文章介紹了Apache服務(wù)器在無(wú)法使用時(shí)候的一些解決方法。需要的朋友參考下
    2013-05-05
  • php環(huán)境配置之CGI、FastCGI、PHP-CGI、PHP-FPM、Spawn-FCGI比較?

    php環(huán)境配置之CGI、FastCGI、PHP-CGI、PHP-FPM、Spawn-FCGI比較?

    什么是CGI、FastCGI、PHP-CGI、PHP-FPM、Spawn-FCGI?在php運(yùn)行環(huán)境配置中用得到,究竟哪種更適合網(wǎng)站。
    2011-10-10
  • 簡(jiǎn)單談?wù)凱HP中的trait

    簡(jiǎn)單談?wù)凱HP中的trait

    自PHP5.4.0起,PHP實(shí)現(xiàn)了一種代碼復(fù)用的方法,稱為Trait。因?yàn)镻HP是單繼承,當(dāng)你需要多個(gè)區(qū)別的特性,就不得不去組合多個(gè)基類,Trait出現(xiàn)后就避免了這些問(wèn)題,Trait的優(yōu)勢(shì)就是可以隨意組合,而且代碼清晰。本文主要介紹了關(guān)于PHP中的trait,需要的朋友可以參考下。
    2017-02-02
  • php中使用sftp教程

    php中使用sftp教程

    這篇文章主要介紹了php中使用sftp教程,本文講解了ftp 協(xié)議簡(jiǎn)介、ssh協(xié)議、sftp 協(xié)議等知識(shí),并給出了FTP和SFTP操作類實(shí)現(xiàn)代碼,需要的朋友可以參考下
    2015-03-03
  • 在PHP程序中運(yùn)行Python腳本(接收數(shù)據(jù)及傳參)的方法詳解

    在PHP程序中運(yùn)行Python腳本(接收數(shù)據(jù)及傳參)的方法詳解

    這篇文章主要為大家詳細(xì)介紹一下,如何在php程序中運(yùn)行Python腳本以及如何使用python返回josn數(shù)據(jù)供php使用,感興趣的小伙伴可以了解一下
    2022-09-09
  • 關(guān)于PHP中Object對(duì)象的筆記分享

    關(guān)于PHP中Object對(duì)象的筆記分享

    關(guān)于PHP中Object對(duì)象的筆記分享,學(xué)習(xí)php面向?qū)ο蟮呐笥芽梢詤⒖枷隆?/div> 2011-06-06
  • PHP7匿名類用法分析

    PHP7匿名類用法分析

    這篇文章主要介紹了PHP7匿名類用法,結(jié)合實(shí)例形式分析了php7匿名類的功能、特性、定義及相關(guān)使用技巧,需要的朋友可以參考下
    2016-09-09
  • 兩種設(shè)置php載入頁(yè)面時(shí)編碼的方法

    兩種設(shè)置php載入頁(yè)面時(shí)編碼的方法

    設(shè)置php頁(yè)面編碼的方法有兩種,一是輸出meta標(biāo)簽,二是使用header函數(shù),下面為大家詳細(xì)介紹下
    2014-07-07

最新評(píng)論

永州市| 洪雅县| 镇宁| 蓝田县| 广水市| 北海市| 长武县| 资溪县| 咸宁市| 佳木斯市| 武山县| 南平市| 天等县| 政和县| 固阳县| 孝昌县| 崇左市| 磐安县| 常熟市| 无锡市| 大同市| 施秉县| 仙游县| 运城市| 西宁市| 宿州市| 蒙自县| 鹿泉市| 沛县| 仁化县| 东安县| 滦平县| 连云港市| 昌都县| 天津市| 枣庄市| 江达县| 专栏| 怀宁县| 资兴市| 永吉县|