为了账号安全,请及时绑定邮箱和手机立即绑定

PHP访问控制问题

PHP访问控制问题

吃鸡游戏 2019-05-12 09:49:53
abstractclassbase{publicfunctioninherited(){$this->overridden();}privatefunctionoverridden(){echo'base';}}classchildextendsbase{privatefunctionoverridden(){echo'child';}}$test=newchild();$test->inherited();这里为什么会输出base,我的认知是输出child啊。。
查看完整描述

2 回答

?
回首忆惘然

TA贡献1847条经验 获得超11个赞

如果想显示child,你还需要重写inherited方法,如果不重写,原父类的inherited调用的也是原父类的overridden方法。所以结果为base
                            
查看完整回答
反对 回复 2019-05-12
?
慕容708150

TA贡献1831条经验 获得超4个赞

子类虽然继承父类,但是没有重写inherited方法,调用的实际上是父类的方法
PS:子类继承父类的时候两者的属性和方法是分开的,并不是说继承了重写方法或者数学就在内存上覆盖了这样子
既然调用的是父类的方法,那么$this自然是父类本身,所以输出的是base里面存在一些继承和多态(误)知识PS:理解不够,说的不是很清楚,希望有大神指点一下里面准确的区别
                            
查看完整回答
反对 回复 2019-05-12
  • 2 回答
  • 0 关注
  • 626 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信