• 微信号
目录

php基础

您当前的位置:首页 > 我的笔记 > php基础>继承-重写父类方法

继承-重写父类方法

在继承关系中,子类会自动继承父类中的定义的方法,但有时在子类中需要对继承的方法进行一些修改,即对父类的方法进行重写。需要注意的是,在子类中重写的方法需要和父类被重写的方法具有相同的方法名、参数

案例

<?php
    class animal{
        public function shout(){
            echo "动物发出叫声<br>";
        }    
    }
    //定义dog的类,继承自animal类
    class dog extends animal {
        //定义狗叫声的方法
        public function shout(){
            echo "汪汪……";
        }
    }
    $dog1=new dog();
    $dog1->shout();
?>

运行结果

陵小宇博客-php继承父类重写方法

从运行结果看,在dog类对象的shout()方法时,只会调用子类重写的该方法,并不会调用父类的shout()方法

如果想要调用父类被重写的方法,就需要使用parent关键字,用于访问父类的成员,由于parent关键字易用是一个类而不是一个对象,因此需要使用范围解析操作符(::)

案例

<?php
    class animal{
        public function shout(){
            echo "动物发出叫声<br>";
        }    
    }
    //定义dog的类,继承自animal类
    class dog extends animal {
        //定义狗叫声的方法
        public function shout(){
            parent::shout();
            echo "汪汪……";
        }
    }
    $dog1=new dog();
    $dog1->shout();

?>

运行结果

陵小宇博客-php继承父类重写方法

从运行结果可以看出,子类通过parent关键字可以成功访问父类的成员方法。

注意:子类方法重写父类方法时,访问权限不能小于父类方法的访问权限。如,父类的方法是public,在子类中重写方法时只能是public的,不能声明为protected或者private