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"; (编辑:常州站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |