《php面向对象》第22课:多态-抽象类

在这次课,我们要掌握两个概念:抽象类,多态。二者之间有着紧密的联系。

多态:不同的对象对于同一行为表现出不同的形态。比如:

动物都有进食的行为,老虎和蛇都属于动物,但进食的方式却不一样。

老虎:撕咬食物

蛇:直接吞咽

那么,如何表达老虎、蛇、动物 之间的关系呢

<?php

//抽象类
abstract class Animal
{
    //抽象方法
    abstract protected function eat();
}

//老虎,继承动物
class Tiger extends Animal
{
    //具体实现
    public function eat()
    {
        echo '老虎撕咬食物吃';
    }
}

//蛇,继承动物
class Snake extends Animal
{
    //具体实现
    public function eat()
    {
        echo '蛇直接吞咽食物吃';
    }
}

$t = new Tiger();
$t->eat();
echo '<br>';
$s = new Snake();
$s->eat();

我们把动物定义为抽象类,因为无法明确其进食行为,所以写成了抽象方法

老虎继承动物类,有明确的进食行为

蛇继承动物类,也有明确的进食行为

abstract :表示抽象的,可以修饰类名,方法名

对象抽象类,有以下几点 需要注意:

  1. 抽象方法没有方法体,如:abstract protected function eat();
  2. 有抽象方法的类必须是抽象类
  3. 抽象类不能实现化,没有自己的对象,即: $n = new Animal() 是错误的。
  4. 抽象类都是父类,它下面有子类
  5. 子类继承抽象类后,必须实现父类所有的抽象方法,即 Tiger类必须有 eat() 方法的实现
  6. 子类重写父类的方法,这就是多态

面向对象中的多态非常常见,大部分表现在继承时,不同的子类对于同一行为表现各种各样的形态。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

李 书 明

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值