天天躁日日躁狠狠躁AV麻豆-天天躁人人躁人人躁狂躁-天天澡夜夜澡人人澡-天天影视香色欲综合网-国产成人女人在线视频观看-国产成人女人视频在线观看

PHP類繼承 extends使用介紹

出來工作這么久了,項目經(jīng)驗倒是不少,但是當(dāng)問及底層的東西時候,常常是一言不發(fā)了。現(xiàn)在項目設(shè)計底層的東西越來越少,可以說是真正用到的也就是那么一點(diǎn),真正核心的東西都已經(jīng)被框架封裝好了。總感覺自己一直進(jìn)步很慢,關(guān)于底層設(shè)計思想,常常也只可意會。隨著時間的流逝,我們常常會感慨書到用時方恨少了,接下來一定要惡補(bǔ)設(shè)計思想了。

今天先來復(fù)習(xí)一下類繼承。

類繼承很重要,作為程序員也基本每天都會和他打交道,但是有些東西你真的都知道嗎?下面是從官網(wǎng)上面看到的。

一個類可以在聲明中用 extends,關(guān)鍵字繼承另一個類的方法和屬性。php不支持多重繼承,一個類只能繼承一個基類。

被繼承的方法和屬性可以通過用同樣的名字重新聲明被覆蓋。但是如果父類定義方法時使用了 final,則該方法不可被覆蓋。可以通過 parent:: 來訪問被覆蓋的方法或?qū)傩浴?br>
當(dāng)覆蓋方法時,參數(shù)必須保持一致否則 php 將發(fā)出 E_STRICT 級別的錯誤信息。但構(gòu)造函數(shù)例外,構(gòu)造函數(shù)可在被覆蓋時使用不同的參數(shù)。

關(guān)于基本的概念想必大家都會知道,但是對于final和parent::在項目中我還真沒有怎么使用過,慚愧啊。
下面主要說一下這兩個關(guān)鍵字的用途吧。

Final 關(guān)鍵字

php 5新增的一個關(guān)鍵字,如果父類中的方法被聲明為 final,則子類無法覆蓋該方法。同樣如果一個類被聲明為 final,則不能被繼承。
需要注意的是: 屬性不能被定義為 final,只有類和方法才能被定義為 final。

范圍解析操作符(::)

范圍解析操作符或者更簡單地說是一對冒號,可以用于訪問靜態(tài)成員,類常量,還可以用于覆蓋類中的屬性和方法。
self,parent 和 static 這三個特殊的關(guān)鍵字是用于在類定義的內(nèi)部對其屬性或方法進(jìn)行訪問的。

當(dāng)一個子類覆蓋其父類中的方法時,php 不會調(diào)用父類中已被覆蓋的方法。是否調(diào)用父類的方法取決于子類。這種機(jī)制也作用于構(gòu)造函數(shù)和析構(gòu)函數(shù),重載以及魔術(shù)方法。

下面是調(diào)用父類的方法的一個示例:

復(fù)制代碼 代碼如下:
<?php
class MyClass
{
    protected function myFunc() {
        echo "MyClass::myFunc()/n";
    }
}

class OtherClass extends MyClass
{
    // 覆蓋了父類的定義
    public function myFunc()
    {
        // 但還是可以調(diào)用父類中被覆蓋的方法
        parent::myFunc();
        echo "OtherClass::myFunc()/n";
    }
}

$class = new OtherClass();
$class->myFunc();
/**
 * 輸出結(jié)果 ->
 * MyClass::myFunc()
 * OtherClass::myFunc()
 */
?>

當(dāng)在類定義之外引用到這些項目時,要使用類名。

::class 自 php 5.5 起,關(guān)鍵詞 class 也可用于類名的解析。使用 ClassName::class 你可以獲取一個字符串,包含了類 ClassName 的完全限定名稱。這對使用了 命名空間 的類尤其有用。這些可能就是以后要討論的話題了,關(guān)于這個概念那就是以后要討論的了,現(xiàn)在我們還在使用php5.3。

不過說句實話,有一些關(guān)鍵字在小項目中確實是很難使用,不過我想多了解一些總還是需要的。尤其是當(dāng)你使用一些第三方的類庫時候,當(dāng)你細(xì)細(xì)研究他的程序邏輯,你總能學(xué)點(diǎn)東西。盡管有些東西你長時間不用,可能就忘記了,但是畢竟他曾經(jīng)在你腦海里經(jīng)過過,總會為以后的人生留點(diǎn)痕跡。

最后廢話不多說了,分享一段范圍解析操作符(::)應(yīng)用的代碼,你們也來感受下:

復(fù)制代碼 代碼如下:
<?php

class cA
{
    /**
     * 直接使用的測試屬性的默認(rèn)值
     */
    protected static $item = 'Foo';

    /**
     * 間接使用的測試屬性的默認(rèn)值
     */
    protected static $other = 'cA';

    public static function method()
    {
        print self::$item."/r/n";
        print self::$other."/r/n";
    }

    public static function setOther($val)
    {
        self::$other = $val;
    }
}

class cB extends cA
{
    /**
     * 重定義測試屬性的默認(rèn)值
     */
    protected static $item = 'Bar';

    public static function setOther($val)
    {
        self::$other = $val;
    }
    /**
     * 不重新聲明 method()方法
     */
}

class cC extends cA
{
    /**
     * 重定義測試屬性的默認(rèn)值
     */
    protected static $item = 'Tango';

    public static function method()
    {
        print self::$item."/r/n";
        print self::$other."/r/n";
    }

    /**
     * 不重新聲明 setOther()方法
     */
}

class cD extends cA
{
    /**
     * 重定義測試屬性的默認(rèn)值
     */
    protected static $item = 'Foxtrot';

    /**
     * 不重新聲明 任何方法來實現(xiàn)上述過程
     */
}

cB::setOther('cB'); //  cB::method()!
cB::method(); // cA::method()!
cC::setOther('cC'); // cA::method()!
cC::method(); // cC::method()!
cD::setOther('cD'); // cA::method()!
cD::method(); // cA::method()!

/**
 * 輸出結(jié)果 ->
 * Foo
 * cB
 * Tango
 * cC
 * Foo
 * cD
 */

?>

php extends類繼承代碼示例:

復(fù)制代碼 代碼如下:
< ?php  
class a{  
public $x;  
public $y;  
function __construct($x=0,$y=0){  
$this->x=$x;  
$this->y=$y;  
}  
function getx(){  
return $this->x;  
}  
function gety(){  
return $this->y;  
}  
function __destruct(){}  
}  
class a2 extends a{}  
/*extends是一個繼承函數(shù)*/  
$b2=new a2(10,10);  
echo $b2->getx()."<br>";  
echo $b2->gety();  
?>

以上介紹的內(nèi)容就是php extends類繼承的全部實現(xiàn)步驟。

php技術(shù)PHP類繼承 extends使用介紹,轉(zhuǎn)載需保留來源!

鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請第一時間聯(lián)系我們修改或刪除,多謝。

主站蜘蛛池模板: 久久精品无码人妻无码AV蜜臀 | 日本aaaa| 消息称老熟妇乱视频一区二区 | 久久免费看少妇级毛片蜜臀 | 京香在线观看 | 久久视热频国产这里只有精品23 | a级毛片高清免费视频 | 乱码国产丰满人妻WWW | 国产精品久免费的黄网站 | 亚洲国产精品第一影院在线观看 | 国产亚洲精品线观看不卡 | 色综合色综合久久综合频道 | 正能量不良WWW免费窗口 | 色AV色婷婷97人妻久久久 | 日韩欧美精品有码在线播放免费 | 中文字幕亚洲无限码 | 果冻传媒在线播放 | 亚洲精品无码不卡 | 国产精品久久久久久无码专区 | 色综合色综合久久综合频道 | 亚洲精品视频久久 | 在线播放性xxx欧美 在线播放午夜理论片 | 全黄H全肉细节文NP 全黄h全肉细节全文 | 麻豆三级电影 | 日韩伦理电影秋霞影院 | 影音先锋男人资源813. | 无码专区aaaaaa免费视频 | 一本道久久综合久久88 | 99国产精品成人免费视频 | 岛国大片在线观看完整版 | 久久综合久综合久久鬼色 | 囯产精品久久久久久久久蜜桃 | 无码137片内射在线影院 | 妈妈的朋友6未删减版完整在线 | 熟女人妻AV五十路六十路 | 广东95后小情侣酒店自拍流出 | 日韩欧美亚洲精品综合在线 | 浪荡女天天不停挨CAO日常视 | 91天堂国产在线 在线播放 | 97超级碰碰人妻中文字幕 | 国产传媒在线观看 |