0

我知道当我希望它仅可用于扩展当前类以及当前类的所有类时,我应该使方法“受保护”。

好的,grandChildClass::method2() 应该受到保护,因为孙子是从孩子扩展而来的。

但是如果从父类如 parentClass::method2() 访问应该是什么?

class parentClass
{
    public function method1() {$this->method2();}
}

class childClass extends parentClass
{
    protected function method2() {}
}

class grandChildClass extends childClass 
{
    public function method3() {$this->method2();}
}
4

1 回答 1

2

如果你尝试

$p = new parentClass;
$p->method1();

对于未定义的方法,您会收到致命错误。

致命错误:在线调用...中未定义的方法parentClass::method2()...

但是,这将正常工作:

$c = new childClass;
$c->method1();

$g = new grandChildClass;
$g->method1();
$g->method3();

所有这些都将method2按照childClass.

于 2013-04-13T21:27:57.773 回答