11.基础---多态

基类与衍生类有相同方法名称的实例,其实那就是本节将说明的多态的基本概念,但是在多态的概念中是不局限在必须有父子关系的类。程序实例ch12_17.py:这个程序有三个类,Animals类是基类,Dogs类是Animals类的衍生类,基于继承的特性所以两个类皆有which()和action()方法,另外设计了一个与上述无关的类Monkeys,这个类也有which()和action()方法,然后程序分别调用which()和action()方法,程序会由对象类别判断应该使用哪一个方法响应程序。

class Animals():
    """Animals类,这是基类"""

    def __init__(self, animal_name):
        self.name = animal_name  # 记录动物名称

    def which(self):  # 返回动物名称
        return 'My per ' + self.name.title()

    def action(self):  # 动物的行为
        return 'sleeping'


class Dogs(Animals):
    """Dogs类别,这是Animal的衍生类"""

    def __init__(self, dog_name):  # 记录动物名称
        super().__init__(dog_name.title())

    def action(self):  # 动物的行为
        return 'running in the street'


class Monkeys():
    """猴子类别,这是其他类"""

    def __init__(self, monkey_name):  # 记录动物名称
        self.name = 'My monkey' + monkey_name.title()

    def which(self):  # 返回动物名称
        return self.name

    def action(self):  # 动物的行为
        return 'running in the forest'


def doing(obj):
    print(obj.which(), "is", obj.action())


# --------------------------------------------
my_cat = Animals('lucy')  # Animals对象
doing(my_cat)
# -------------------------------------------
my_dog = Dogs('gimi')  # Dogs对象
doing(my_dog)
# -------------------------------------------
my_monkey = Monkeys('taylor')  # Monkeys对象
doing(my_monkey)

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值