鍍金池/ 問(wèn)答/PHP/ PHP訪問(wèn)控制問(wèn)題

PHP訪問(wèn)控制問(wèn)題

abstract class base { 
    public function inherited() { 
        $this->overridden(); 
    } 
    private function overridden() { 
        echo 'base'; 
    } 
} 

class child extends base { 
    private function overridden() { 
        echo 'child'; 
    }
}
$test = new child();
$test->inherited();

這里為什么會(huì)輸出base,我的認(rèn)知是輸出child啊。。

回答
編輯回答
葬愛(ài)

如果想顯示child,你還需要重寫(xiě)inherited方法,如果不重寫(xiě),原父類的inherited調(diào)用的也是原父類的overridden方法。所以結(jié)果為base

2018年9月7日 16:13
編輯回答
膽怯

子類雖然繼承父類,但是沒(méi)有重寫(xiě)inherited方法,調(diào)用的實(shí)際上是父類的方法

PS:子類繼承父類的時(shí)候兩者的 屬性和方法 是分開(kāi)的,并不是說(shuō)繼承了重寫(xiě)方法或者數(shù)學(xué)就在內(nèi)存上覆蓋了這樣子

既然調(diào)用的是父類的方法,那么$this自然是父類本身,所以輸出的是base
里面存在一些 繼承和多態(tài)(誤) 知識(shí)
PS:理解不夠,說(shuō)的不是很清楚,希望有大神指點(diǎn)一下里面準(zhǔn)確的區(qū)別

2018年4月7日 22:04
編輯回答
風(fēng)畔

私有方法不能覆蓋啊
不然私有二字的意義何在

2018年6月10日 17:42