我可以在Child类中更改任何父函数的访问修饰符吗?

时间:2011-02-07 10:11:03

标签: php c++

我可以更改Child类中任何父函数的访问修饰符吗?

3 个答案:

答案 0 :(得分:4)

子类只能“放松”可见性,例如

class ParentClass
{
    protected function foo() {} 
}

可以

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

但不是

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

除此之外,您可以使用Reflection API在运行时更改Visibility:

虽然你应该问问自己为什么要这样做。通常,隐藏子女方法或属性的父类是出于某种原因这样做的。

答案 1 :(得分:2)

没有。是不可能的。而且不仅仅是PHP。

答案 2 :(得分:1)

我自己的测试表明,儿童班可以提高可见度,但不会降低可见度。

例如,假设父类的成员变量声明为private。然后,子类可以将同一成员变量定义为privateprotected, or public`。

同样,如果父成员被声明为protected,那么孩子可以将成员声明为protectedpublic

最后,如果父级将成员声明为public,则所有子级中的成员必须为public