重写/覆盖 override
指:子类重写了父类的同名方法
class Human{
public function say($name){
echo $name,"吃了吗?";
}
}
class Stu extends Human{
public function say(){
echo '切克闹,卡猫百比';
}
}
$ming=new Stu();
$ming->say(); //输出 切克闹,卡猫百比
$ming->say('张三'); // 输出 切克闹,卡猫百比
如上这个过程 叫重写 override
重载 overload
重载是指:存在多个同名方法,但参数类型或个参数个数不同。达到重载传不同的参数,调用不同的方法。
但是在php中,不允许存在多个同名方法
因此,不能够完成java,c++中的这种重载
但是,php的灵活性,能达到类似的效果。
看如下: 通过 func_get_args函数达到重载的效果
class Calc{
public function area(){
//判断一下调用area时,得到的参数个数
$args=func_get_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); //输出 314
//计算矩形的面积
echo $calc->area(5,8); //输出 40