加入收藏 | 设为首页 | 会员中心 | 我要投稿 常州站长网 (https://www.0519zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 编程要点 > 语言 > 正文

PHP重载和重写有啥不一样?为何不允许同名函数重载?

发布时间:2022-04-18 13:53:13 所属栏目:语言 来源:互联网
导读:有些人会将重载和重写的概念搞混和不了解PHP为什么不允许(同名函数)重载?因此,这篇文章带大家回顾一下PHP重载的基础知识,希望对大家学习和理解PHP重载有帮助,下面我们一起来看看吧。 重载和重写 先区分一下重载(overload)和重写(override):重载指多
      有些人会将重载和重写的概念搞混和不了解PHP为什么不允许(同名函数)重载?因此,这篇文章带大家回顾一下PHP重载的基础知识,希望对大家学习和理解PHP重载有帮助,下面我们一起来看看吧。
 
      重载和重写
 
      先区分一下重载(overload)和重写(override):重载指多个名字相同,但参数不同的函数在同一作用域并存的现象;
 
      重写出现在继承中,指子类重定义父类功能的现象,也被称为覆盖。重载中说的参数不同有三种情况:参数个数不同,参数类型不同,参数顺序不同。
 
      重写一般指函数的覆盖,即相同签名的成员函数在子类中重新定义(实现抽象函数或接口不是重写),是实现多态(polymorphism)的一种关键技术。成员变量也可以重载/覆盖,但一般不会这么做。
 
      用简单的C代码来说明重载:
 
int add(int a, int b) { return a + b; }
double add(double a, double b) { return a + b; }
double add(int a, int b, double c) { return a + b + c; }
double add(double a, int b, int c) { return a + b + c; }
 
      PHP的苦衷
 
      PHP不支持同名函数的重载是有原因的。上面已经提到,PHP函数声明时不需要指定参数类型,重载中的三种情况立马废掉两种。幸存的参数个数不同这一条路也走不通,为什么呢?因为PHP中调用函数时,少传参数,不行;多传参数,没问题!来个简单的例子:
 
function foo($arg1, $arg2) {
  echo "$arg1, $arg2n";

(编辑:常州站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读