方法重载
方法重载指的是提供了创建同名的多个方法的能力,但这些方法需使用不同的参数类型。由于 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
类:
<?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 与方法重载和方法重写的关系。