0
我知道当我希望它只对所有扩展当前类以及当前类的类可用时,我应该创建一个“protected”方法。从父类访问受保护的方法
好的,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();}
}
为了使这个更清洁,'parentClass'可以定义'method2'的纯虚拟版本,如下所示:'virtual method2()= 0;'。这将显式地要求任何childClass实现'method2()'函数,以便它可以被称为我的'parentClass'方法。 – Alan
谢谢,我希望它能像你说的那样工作!我迷茫了自己,并且正在访问一个在我的parentClass中定义的方法,但是在grandchildClass中,很显然,childClass方法工作得很好。 – user1032531
@Alan:PHP中没有'virtual'方法。你可以将一个类及其方法定义为'abstract'(这意味着它们只有定义并且不能被实例化)。 –