php 类的继承及相关知识,求科普

IF_World 2017-09-26 10:09:49
我有一个父类Controller,子类继承父类Controller名称叫HomeController,
然后父类有函数public function statusSql($status);子类也有protected function statusSql($status);
然后我在子类函数调用
protected function case()
{
$statusSql = $this->statusSql($status);//调用会报php 500 error
}
把子类的函数protected function statusSql($status);去掉就正常了,难道同名函数还会冲突嘛......
...全文
430 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
IF_World 2017-09-26
  • 打赏
  • 举报
回复
引用 1 楼 Mechnaic 的回复:
子类重写父类的方法的访问修饰符,不能低于父类的方法访问权限 重写也叫覆写,修饰符、返回类型、参数就是要和父类一摸一样才叫覆写,意思是说各个地方都需要完美的盖住,在面向接口编程中,重写是子类有自己的逻辑要实现,同时又不破坏已写好程序逻辑的好方法 例子:在父类中是public的方法,如果子类中将其降低访问权限为private,那么子类中重写以后的方法对于外部对象就不可访问了,这个就破坏了继承的含义
额,但是我是在子类的函数里面调用的, 是不是$this->statusSql($status);这样调用程序不知道调用哪一个函数所以报错阿,在子类中$this是指啥来着?
IF_World 2017-09-26
  • 打赏
  • 举报
回复
引用 3 楼 hongmei85 的回复:
$statusSql = $this->statusSql($status);//调用会报php 500 error 这个$status在case() 里面定义了吗?
定义了,protected function case($status); 上面漏写了,详细错误看不到,google开发工具看network里返回的是个500状态 页面是白的,好像写了个php error,xxx500; 类似于用require引入一个不存在的php所报的那种致命错误..
hongmei85 2017-09-26
  • 打赏
  • 举报
回复
错误的详细内容是什么?
Mechnaic 2017-09-26
  • 打赏
  • 举报
回复
子类重写父类的方法的访问修饰符,不能低于父类的方法访问权限 重写也叫覆写,修饰符、返回类型、参数就是要和父类一摸一样才叫覆写,意思是说各个地方都需要完美的盖住,在面向接口编程中,重写是子类有自己的逻辑要实现,同时又不破坏已写好程序逻辑的好方法 例子:在父类中是public的方法,如果子类中将其降低访问权限为private,那么子类中重写以后的方法对于外部对象就不可访问了,这个就破坏了继承的含义
hongmei85 2017-09-26
  • 打赏
  • 举报
回复
$statusSql = $this->statusSql($status);//调用会报php 500 error 这个$status在case() 里面定义了吗?
xuzuning 2017-09-26
  • 打赏
  • 举报
回复
父类Controller的是 public function statusSql($status);//全局的 子类也是 protected function statusSql($status)//小组的 显然 protected 的访问权限要低于 public ,这是不允许的,在严格检查中是要报错的,但你并没有给错误信息以出路,所以将 web 服务器憋死了,只能报 500 错

21,886

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧