最新下载
热门教程
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
php怎么写重写?php方法重写介绍
时间:2022-06-24 15:04:38 编辑:袖梨 来源:一聚教程网
方法的重写/方法的覆盖(override)
当一个父类知道所有的子类都有一个方法,但是父类不能确定该方法究竟如何写,
可以让子类去覆盖这个方法,具体用法如下:
//抽象一个Animal类
class Animal{
public $name;
protected $price;
function cry(){
echo "不知道动物怎么叫..";
echo "
";}
}
class Dog extends Animal{
//覆盖父类中的 cry()方法
function cry(){
echo "小狗汪汪叫..";
echo "
";}
}
class Pig extends Animal{
//覆盖父类中的 cry()方法
function cry(){
echo "小猪哼哼叫..";
echo "
";}
}
//创建一个只狗
$animal=new Animal();
$animal->cry();
$dog1=new Dog();
$dog1->cry();
$pig1=new Pig();
$pig1->cry();
?>
| 代码如下 | 复制代码 |
关于方法重写细节讨论:
方法重写就是子类有一个方法,和父类的某个方法的名称、参数个数一样,那么我们就说子类的这个方法重写了父类的那个方法。
1. 要实现重写,要求 子类的那个方法的名字和参数个数一摸一样,但是并不要求参数的名称一样.
2. 如果子类要去调用父类的某个方法(public / protected) 则可以使用 parent::方法名(参数..) , 父类名::方法名(参数...)
3. 在实现方法覆盖的时候,访问修饰符可以不一样 //但是必须满足: 子类的访问范围>=父类的访问范围
注意:当父类的函数为私有(private)类型时,不能覆盖,因为父类为私有该函数根本不能继承。
| 代码如下 | 复制代码 |
| // 多态体现在什么地方? // class Animal{ // public function cry(){ // echo '动物叫唤..'; // } // } // class Cat extends Animal{ // public function cry(){ // echo "abc"; // } // } // $cat1=new Cat(); // $cat1->cry(); | |
// 当子类没有覆盖父类的方法则 $cat1->cry() 调用的是父类,当 子类覆盖了父类的方法,则调用自己的cry()
相关文章
- 无尽花界诸神角色图鉴 无尽花界阵营角色详细介绍 05-08
- 驯龙之旅兑换码大全 驯龙之旅最新可用礼包码汇总 05-08
- 曲奇云盘怎么保存别人分享的文件 05-08
- 末世避难所手游新手入门指南 末世避难所手游零基础快速上手教程 05-08
- 六道轮回手游上线时间揭晓 六道轮回手游正式开服日期分享 05-08
- 无限暖暖埋骨地10个冥想点位一览 05-08