php基础(30)_面向对象的三大特性【三】_方法重写/方法覆盖

面向对象三大特性:
封装、继承、多态

多态--什么是多态
一个类,被多个子类继承,如果这个类的某个方法,在多个子类中,表现出不同的功能,我们称这种行为为多态。(同一个类的不同子类表现出不同的形态),除了方法重载,多态另一种表现形式就是方法重写/方法覆盖。

方法重写/方法覆盖(override)介绍:

简单的说:方法重写就是子类有一个方法,和父类的某个方法的名称、参数个数一样,那么我们就说子类的这个方法重写(覆盖)了父类的那个方法

方法覆盖有很多条件,总的讲有三点一定注意:

1、子类的方法的参数个数,方法名称,要和父类方法的参数个数,方法名称一样(并不要求参数名称一样)。
2、子类方法不能缩小父类方法的访问权项.(访问修饰符可以不一样但是必须满足子类的访问范围>=父类的访问范围)
3、在子类中需要访问其父类的方法(public/protected属性),可以使用父类名::方法名()或者parent::方法名()来完成.

例如:

<?PHP
class Animal
{
    public $name;
    protected $price; //注意当父类函数cry有参数,继承类无参数时会报错!php不支持方法重载
    public function cry()  
    {
         echo "不知道动物怎么叫..";
    }
}
class Dog extends Animal
{
    function cry()
    {
         echo "小狗汪汪叫..";
	     Animal::cry(); //访问父类cry()
    }
}
class Pig extends Animal
{
    function cry1()
    {
         echo "哼哼叫..";
    }
} 
//当子类没有覆盖父类的方法则cry方法调用的是父类,当子类覆盖了父类的方法,则调用了自己的cry()
$dog1=new Dog();
$dog1->cry("hello");
$pig1=new Pig();
$pig1->cry();
?>
---------- 编译结果 ----------
小狗汪汪叫..不知道动物怎么叫..不知道动物怎么叫..

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值