重写/覆盖:override
指:子类重写了父类的同名方法
重载: overload
重载是指:存在多个同名方法,但参数类型/个数不同.
传(几个)不同的参数,调用不同的方法
但是在PHP中,不允许存在多个同名方法.
因此,不能够完成java,c++中的这种重载
但是,PHP的灵活,能达到类似的效果
public class OverTest { public static void main(String[] args) { Calc calc = new Calc(); System.out.println(calc.area(10)); System.out.println(calc.area(5,8)); } } class Calc { public double area(float r) { return 3.14 * r * r; } public int area(int width,int height) { return width*height; } }
<?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 '哥仨好'; } */ //以上两个同名方法(不能定义),在java中可以叫做重载 } $ming = new Stu(); $ming->say(); $ming->say('张三'); // 上面这个过程叫重写override! 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 '未知图形'; } } } //count()返回数组中元素的数目 $calc = new Calc(); // 计算圆的页面 echo $calc->area(10),'<br />'; // 计算矩形的面积 echo $calc->area(5,8);

我的微信
这是我的微信扫一扫