php 与方法重载和方法重写的关系

方法重载

方法重载指的是提供了创建同名的多个方法的能力,但这些方法需使用不同的参数类型。由于 php 是弱类型的语言,对于方法中的参数类型我们可以忽略,在 php 中显然第一点就是不能满足的,php 中原生不支持创建多个同名方法的能力

<?php
/**
 * Created by phpStorm.
 * User: binwei
 * Date: 2019/5/18
 * Time: 10:32
 */


class Demo
{
    public function cat()
    {

    }

    public function cat()
    {
        
    }
}

在这里插入图片描述
所以,php 并不能像 Java 或其他高级语言那样实现方法重载。

方法重写

所谓的方法重写就是子类将父类的实现替换为自己的实现,这就是方法重写 Override,或者叫做方法覆写。
我们有一个 Animal 类,还有一个 Cat 类:


Animal.php

<?php
/**
 * Created by phpStorm.
 * User: binwei
 * Date: 2019/5/18
 * Time: 10:40
 */


class Animal
{
    public function eat()
    {
        return "Animal eat";
    }
}

Cat.php

<?php
/**
 * Created by phpStorm.
 * User: binwei
 * Date: 2019/5/18
 * Time: 10:32
 */

require_once "Animal.php";

class Cat extends Animal
{

}

$cat = new Cat();
$rs = $cat->eat();
echo $rs;

如果我们只是用 Cat 继承 Animal 那么我们调用 eat 方法后的输出结果就是 Animal eat:
在这里插入图片描述
这样并不能实现方法重写,我们可能需要的是猫吃鱼或是狗吃骨头。所以我们必须要重写父类 Animal 类中的 eat 方法。

<?php
/**
 * Created by phpStorm.
 * User: binwei
 * Date: 2019/5/18
 * Time: 10:32
 */

require_once "Animal.php";

class Cat extends Animal
{
    public function eat()
    {
//        return parent::eat(); // TODO: Change the autogenerated stub
        return "猫吃鱼";
    }

}

$cat = new Cat();
$rs = $cat->eat();
echo $rs;

再次查看输出结果:
在这里插入图片描述
以上就是 php 与方法重载和方法重写的关系。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值