关于继承重写的问题

qq_36197960 2016-10-18 12:41:46
class animal{
private function cry($name){
echo "动物叫唤";
}
}
class cat extends animal{
public function cry(){
echo "猫猫叫唤";
}
}
这样会报错:为什么?private无法继承,都无法继承了,还能重写吗,是不是只要方法名不一样,参数个数不一样就错

class animal{
final public function cry(){
echo "动物叫唤";
}
}
class cat extends animal{
public function cry(){
echo "猫猫叫唤";

}
}
这样还是报错,方法名跟参数个数都一样,无法被继承

class animal{
private function cry(){
echo "动物叫唤";
}
}
class cat extends animal{
public function cry(){
echo "猫猫叫唤";

}
}
这样就对了....玩我呢。。。。。。。
...全文
254 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
傲雪星枫 2016-10-18
  • 打赏
  • 举报
回复
class animal{ private function cry($name){ echo "动物叫唤"; } } class cat extends animal{ public function cry(){ echo "猫猫叫唤"; } } 这个参数数量不兼容,所以不能重写。
傲雪星枫 2016-10-18
  • 打赏
  • 举报
回复
final public function cry(){ echo "动物叫唤"; } final 关键字定义的方法不能被继承。 如果我们希望某个方法,比如计算个人所得税的方法,不能子类改写,(不希望该方法被子类中方法重载 )可以使用fianl 来修饰方法
xuzuning 2016-10-18
  • 打赏
  • 举报
回复
出错时,你应认真阅读错误信息 1、Strict Standards: Declaration of cat::cry() should be compatible with animal::cry($name) 是说,继承时参数应该是兼容的:cat::cry() 没有参数,而 animal::cry($name) 有参数,这就是不兼容了 2、Fatal error: Cannot override final method animal::cry() final public function cry(){ 定义方法时有 final 声明,final 是最终的意思,也就是不可继承的意思 这都是自己给自己上的套

21,890

社区成员

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

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