2011-02-07 93 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