最新下载
热门教程
- 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()
相关文章
- 炉石传说血DK卡组怎么样 炉石传说血DK卡组推荐介绍 11-05
- 咒术回战幻影夜行官网在哪里 咒术回战幻影夜行官网地址介绍 11-05
- 蚂蚁庄园今天答题答案2024年10月26日 11-05
- 以闪亮之名变装物语甜趣篇怎么玩 11-05
- 闪耀暖暖永夜禁锢怎么玩 11-05
- 闪耀暖暖永夜禁锢怎么玩 闪耀暖暖永夜禁锢活动介绍 11-05