2011-02-07 31 views

回答

4

兒童班只能「放鬆」視野,

class ParentClass 
{ 
    protected function foo() {} 
} 

可以

class ChildClass extends ParentClass 
{ 
    public function foo() {} 
} 

但不

class ChildClass extends ParentClass 
{ 
    private function foo() {} 
} 

除此之外,你可以使用反射API在運行時更改可見性:

雖然你應該問自己,爲什麼你想這樣做。由於某種原因,通常會從子項中隱藏方法或屬性的父類會這樣做。

+0

我不想那樣做,但是這個問題出現在我的腦海裏?爲了好奇,我想知道答案。 – Gaurav 2011-02-07 10:17:59

2

不,這是不可能的。而不僅僅是在PHP中。

+0

你能給我任何理由,爲什麼這樣? – Gaurav 2011-02-07 10:14:11

+0

在PHP中,接受的答案是正確的。如果將其更改爲更寬鬆的訪問修飾符,您可以更改它:protected => public。 – 2018-02-21 10:15:53

1

我自己的測試表明,兒童班可以提高可見度,但不會降低它。

例如,假設父類具有聲明爲private的成員變量。然後,子類可以定義與private,protected, or public`相同的成員變量。

同樣,如果父母成員被宣佈爲protected,那麼孩子可以聲明該成員爲protectedpublic

最後,如果父母聲明成員爲public,那麼該成員在所有子女中必須爲public