php方法重载和重写的区别
程序员文章站
2022-03-24 12:13:17
...
重写 :(推荐学习:PHP编程从入门到精通)
子类继承父类, 定义和父类名称, 参数列表 完全一致的函数, 新的函数会覆盖旧的方法
<?php class human{ public function say($name){ echo $name,' 吃了吗?<br />'; } } class stu extends human{ public function say(){ echo '切克闹,卡猫百比<br />'; } /* public function say($a,$b,$c){ echo '哥仨好'; } 报错: Fatal error: Cannot redeclare stu::say() in D:\wamp\www\php\61.php on line 28 在PHP中,不允许存在多个同名方法,没有重载概念这一说。 */ } $li=new stu(); $li->say(); $li->say('binghui');// 上面这个过程叫重写override!
重载:
同一个类中的多个方法具有相同的名字,但这些方法具有不同的参数列表,即参数的数量或参数类型不能完全相同
<?php //在PHP中模拟重载的方法 class Calc { public function area() { // 判断一个调用area时,得到的参数个数 $args = func_get_args(); if(count($args) == 1) { return 3.14 * $args[0] * $args[0]; } else if(count($args) == 2) { return $args[0] * $args[1]; } else { return '未知图形'; } } } $calc = new Calc(); // 计算圆的页面 echo $calc->area(10),'<br />'; // 计算矩形的面积 echo $calc->area(5,8); ?>
联系 && 区别:
方法的重载和重写都是实现多态的方式,区别在于前者实现的是编译时的多态性,而后者实现的是运行时的多态性
重载发生在一个类中,同名的方法如果有不同的参数列表(参数类型不同、参数个数不同或者二者都不同)则视为重载;重写发生在子类与父类之间,重写要求子类被重写方法与父类被重写方法和相同的参数列表
重载对返回类型没有特殊的要求,不能根据返回类型进行区分
php不支持重载,若要实现类似功能使用 Trait 机制
以上就是php方法重载和重写的区别的详细内容,更多请关注其它相关文章!
上一篇: php 方法形参没有传怎么判断
下一篇: PHP检测用户是否关闭浏览器的方法
推荐阅读
-
java 中sendredirect()和forward()方法的区别
-
PHP动态地创建属性和方法, 对象的复制, 对象的比较,加载指定的文件,自动加载类文件,命名空间
-
php面向对象编程self和static的区别
-
IE和FIREFOX下CSS的区别与解决方法第1/2页
-
PHP中子类重载父类的方法【parent::方法名】
-
c#方法中调用参数的值传递方式和引用传递方式以及ref与out的区别深入解析
-
Objective-C中的重载和重写详解
-
PHP使用反射机制实现查找类和方法的所在位置
-
PHP静态方法和静态属性及常量属性的区别与介绍
-
Java中new关键字和newInstance方法的区别分享