真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

php中重寫(xiě)方法有哪些規(guī)則

這篇文章將為大家詳細(xì)講解有關(guān)php中重寫(xiě)方法有哪些規(guī)則,小編覺(jué)得挺實(shí)用的,因此分享給大家做個(gè)參考,希望大家閱讀完這篇文章后可以有所收獲。

青川網(wǎng)站建設(shè)公司成都創(chuàng)新互聯(lián)公司,青川網(wǎng)站設(shè)計(jì)制作,有大型網(wǎng)站制作公司豐富經(jīng)驗(yàn)。已為青川近1000家提供企業(yè)網(wǎng)站建設(shè)服務(wù)。企業(yè)網(wǎng)站搭建\成都外貿(mào)網(wǎng)站建設(shè)公司要多少錢(qián),請(qǐng)找那個(gè)售后服務(wù)好的青川做網(wǎng)站的公司定做!

php中重寫(xiě)方法的規(guī)則有:1、final修飾的類方法不能被子類重寫(xiě);2、如果要重寫(xiě)父類方法,那么參數(shù)個(gè)數(shù)必須一致;3、在重寫(xiě)時(shí),訪問(wèn)級(jí)別只可以等于或大于父類,不可提升訪問(wèn)級(jí)別。

方法重寫(xiě)規(guī)則:

1、final修飾的類方法不可被子類重寫(xiě)

final修飾的類方法不可被子類重寫(xiě) 即便final private方法無(wú)法被繼承 子類仍不能對(duì)齊進(jìn)行重寫(xiě)

class FinalMethod
{
    //可繼承不可重寫(xiě)
    final public function finalPublic()
    {
        echo "can be inherited, but be overrided";
    }
    //可繼承不可重寫(xiě)
    final protected function finalProtected()
    {
        echo "can be inherited, but be overrided";
    }
    //不可繼承不可重寫(xiě) 雖然子類繼承不到父類的private方法 但同時(shí)也會(huì)被final限制無(wú)法重寫(xiě)
    final private function finalPrivate()
    {
        echo "can not be inherited or be overrided";
    }
    //雖然不可繼承 但子類里可重寫(xiě)此方法
    private function private()
    {
        echo "can not be inherited ,but be overrided";
    }
}

class Override extends FinalMethod
{
    //error
    public function finalPublic()
    {
    }
    //error
    protected function finalProtected()
    {
    }
    //error
    private function finalPrivate()
    {
    }
    //correct
    public/protected/private function private()
    {
        //子類繼承父類重寫(xiě)父類方法時(shí)訪問(wèn)級(jí)別只能更加寬松 不可更為嚴(yán)格
    }
}

2、PHP是否重寫(xiě)父類方法只會(huì)根據(jù)方法名是否一致判斷(5.3以后重寫(xiě)父類方法參數(shù)個(gè)數(shù)必須一致)

這里并不是說(shuō)方法參數(shù)無(wú)任何作用 PHP無(wú)重載機(jī)制 所以判斷是不是重寫(xiě)只會(huì)通過(guò)方法名(C/C++不僅要方法名相同,參數(shù)也相同時(shí)才被視為重寫(xiě),否則即為重載,即新定義了一個(gè)多態(tài)函數(shù)的態(tài)) 當(dāng)方法名相同時(shí)即被認(rèn)為是在重寫(xiě)父類方法,5.2可以參數(shù)不同,5.3以后參數(shù)需和父類方法一致,且都追尋繼承訪問(wèn)級(jí)別的規(guī)則。

class Father
{
    public function index($args_1)
    {
    }
}

class Child extends Father
{
    //5.3以后重寫(xiě)方法必須與父類保持參數(shù)個(gè)數(shù)相同
    public function index($args_1, $args_2)
    {
        //在C/C++中此為重載非重寫(xiě),因?yàn)镃/C++具有標(biāo)準(zhǔn)的多態(tài)機(jī)制,會(huì)因參數(shù)不同而視為某一方法的另一種態(tài)
        //but在php中此依然為重寫(xiě) 但5.3以后此為非法 必須與父類的方法參數(shù)個(gè)數(shù)保持一致
    }
    //5.3以后重寫(xiě)方法必須與父類保持參數(shù)個(gè)數(shù)相同
    private function index($args_1, $args_2)
    {
        //C/C++會(huì)因?yàn)閰?shù)不同于父類方法而視為重載,即新定義了一個(gè)函數(shù)的態(tài),所以不會(huì)受到繼承訪問(wèn)權(quán)限的限制
        //但php仍然會(huì)被視為對(duì)父類方法的重寫(xiě),會(huì)受到繼承訪問(wèn)權(quán)限的升降規(guī)則限制
    }
}

3、重寫(xiě)時(shí)訪問(wèn)級(jí)別只可以等于或者寬松于父類 不可提升訪問(wèn)級(jí)別

父類的public方法不能被子類重寫(xiě)為protected或者private,protected方法不能被重寫(xiě)為private,可以寬松er,不可以嚴(yán)格er

class Father
{
    public function index()
    {
    }
}

class Child extends Father
{
    protected/private function index()
    {
       //訪問(wèn)權(quán)限提升 錯(cuò)誤
       //父類為public 則子類重寫(xiě)也只能為public
       //父類為protected 則子類可為public/protected
       //父類為private 則子類public/protected/private皆可
    }
}

關(guān)于php中重寫(xiě)方法有哪些規(guī)則就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,可以學(xué)到更多知識(shí)。如果覺(jué)得文章不錯(cuò),可以把它分享出去讓更多的人看到。


本文標(biāo)題:php中重寫(xiě)方法有哪些規(guī)則
文章地址:http://weahome.cn/article/jdjips.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部