php之重写和重载

概念

重写/覆盖 override
指:子类重写了父类的同名方法

重载: overload
重载是指:存在多个同名方法,但参数类型/个数不同.传不同的参数,调用不同的方法

和java、c++的区别

但是在PHP中,不允许存在多个同名方法.
因此,不能够完成java,c++中的这种重载
但是,PHP的灵活,能达到类似的效果

重写详解

class Human{
    public function say(){
        echo "吃饭了吗?";
    }
}
class Stu extends Human{
    public function say(){
        echo "我们跟着老外说:今天天气真好!!!";
    }
}

$lisi=new Stu();
$lisi->say();  //我们跟着老外说:今天天气真好!!!

java中的重载

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实现java中重载出错,但是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);
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值