簡體   English   中英

我可以更改Child類中任何父函數的訪問修飾符嗎?

[英]Can I change the access modifiers of any parent function in Child class?

我可以更改Child類中任何父函數的訪問修飾符嗎?

子類別只能“降低”可見度,例如

class ParentClass
{
    protected function foo() {} 
}

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

但不是

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

除此之外,您還可以使用Reflection API在運行時更改可見性:

盡管您應該問自己為什么要這么做。 通常,父類向其子對象隱藏方法或屬性是出於某種原因。

不,這是不可能的。 而且不僅限於PHP。

我自己的測試表明,子類可以提高可見性,但不能降低可見度。

例如,假設父類的成員變量聲明為private 然后,子類可以定義與privateprotected, or public相同的成員變量。

同樣,如果將父成員聲明為protected ,則子代可以將成員聲明為protectedpublic

最后,如果父母宣布成員為public ,那么該成員必須在所有孩子中都是public

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM