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