Python基础十三:面向对象编程二:继承和多态

Python基础:面向对象编程二:继承和多态


Python基础系列内容为学习廖雪峰老师Python3教程的记录,廖雪峰老师官网地址:廖雪峰Python3教程


Author:yooongchun

Email:yooongchun@foxmail.com


  • 继承和多态:在OOP程序设计中,当我们定义一个class时,可以从某个现有的class继承,新的class称为子类(subclass),而被继承的那个class称为基类(Base class)

    假设现在我们有一个名为Animal的class

    class Animal:
      def run(self):
          print('Animal is running...')

    现在我们需要构建一个新类Dog类,这样我们就可以从Animal类继承

    class Dog(Animal):

    继承有什么好处呢?最大的好处就是子类会自动拥有父类的全部功能

    >>> Animal().run()
    Animal is running...
    >>> Dog().run()
    Animal is running...

    从上面的代码可见,我们并没有为Dog类写run函数,但是他却有该函数功能,原因就是他继承了Animal类的run函数。

    观察上面的Dog函数,我们希望,他打印的信息不是Animal is running...,而应该是Dog is running...,这样,我们来对上面的Dog类做一些修改

    class Dog(Animal):
    def run(self):
          print('Dog is running...')

    调用

    >>> Dog().run()
    Dog is running...

    此时,Dog类的run函数并没有调用父类的,而是使用了在其内部定义的run方法,现在,我们获得了OOP程序设计的另一个好处:多态!

  • Python是一种动态语言。

    相比较于静态语言(如Java)来说,如果需要传入某个特定的数据类型,那么传入的参数必须是相应的数据类型或者是其子类,否则调用就会出错,但对于Python来说则大可不必如此严格,比如,对于参数需要传入Animal类型,那么实际传入的参数未必一定要是该类型,只要是拥有run方法的对象都可以,这叫动态语言的”鸭子类型”,他并不要求严格的继承体系,一个对象只要“看起来像鸭子,走起路来像鸭子”,那么他就可以被看作是鸭子。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

zoz.cool

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

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

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

打赏作者

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

抵扣说明:

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

余额充值