PHP访问控制问题

abstractclassbase{
publicfunctioninherited(){
$this->overridden();
}
privatefunctionoverridden(){
echo'base';
}
}
classchildextendsbase{
privatefunctionoverridden(){
echo'child';
}
}
$test=newchild();
$test->inherited();
这里为什么会输出base,我的认知是输出child啊。。
吃鸡游戏
浏览 627回答 2
2回答

回首忆惘然

如果想显示child,你还需要重写inherited方法,如果不重写,原父类的inherited调用的也是原父类的overridden方法。所以结果为base

慕容708150

子类虽然继承父类,但是没有重写inherited方法,调用的实际上是父类的方法PS:子类继承父类的时候两者的属性和方法是分开的,并不是说继承了重写方法或者数学就在内存上覆盖了这样子既然调用的是父类的方法,那么$this自然是父类本身,所以输出的是base里面存在一些继承和多态(误)知识PS:理解不够,说的不是很清楚,希望有大神指点一下里面准确的区别
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript