一聚教程网:一个值得你收藏的教程网站

热门教程

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()


热门栏目