我可以更改Child类中任何父函数的访问修饰符吗?
答案 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
。然后,子类可以将同一成员变量定义为private
,protected, or
public`。
同样,如果父成员被声明为protected
,那么孩子可以将成员声明为protected
或public
。
最后,如果父级将成员声明为public
,则所有子级中的成员必须为public
。