扫描二维码,下载安卓APP
下载安卓APP箭头
客服QQ
箭头给我发消息

客服QQ:2698585038
论坛 >编程语言 >Python 面向对象(初级篇三)

Python 面向对象(初级篇三)

qsl发布于 2017-09-07 09:29查看:11601回复:1

二、继承

        继承,面向对象中的继承和现实生活中的继承相同,即:子可以继承父的内容。

        例如:

        猫可以:喵喵叫、吃、喝、拉、撒

        狗可以:汪汪叫、吃、喝、拉、撒

        如果我们要分别为猫和狗创建一个类,那么就需要为 猫 和 狗 实现他们所有的功能,如下所示:

image.png

        上述代码不难看出,吃、喝、拉、撒是猫和狗都具有的功能,而我们却分别的猫和狗的类中编写了两次。如果使用 继承 的思想,如下实现:

        动物:吃、喝、拉、撒

        猫:喵喵叫(猫继承动物的功能)

        狗:汪汪叫(狗继承动物的功能)

image.png

image.png

        所以,对于面向对象的继承来说,其实就是将多个类共有的方法提取到父类中,子类仅需继承父类而不必一一实现每个方法。

        注:除了子类和父类的称谓,你可能看到过 派生类 和 基类 ,他们与子类和父类只是叫法不同而已。

1504747465564443.jpg

        学习了继承的写法之后,我们用代码来是上述阿猫阿狗的功能:

1504747502935732.jpg

        那么问题又来了,多继承呢?

              是否可以继承多个类

              如果继承的多个类每个类中都定了相同的函数,那么那一个会被使用呢?

        1、Python的类可以继承多个类,Java和C#中则只能继承一个类

        2、Python的类如果继承了多个类,那么其寻找方法的方式有两种,分别是:深度优先广度优先

1504747613651588.jpg

        当类是经典类时,多继承情况下,会按照深度优先方式查找

        当类是新式类时,多继承情况下,会按照广度优先方式查找

        经典类和新式类,从字面上可以看出一个老一个新,新的必然包含了跟多的功能,也是之后推荐的写法,从写法上区分的话,如果 当前类或者父类继承了object类,那么该类便是新式类,否则便是经典类。

1504747664743440.jpg

1504747684337207.jpg

image.png

image.png

        经典类:首先去A类中查找,如果A类中没有,则继续去B类中找,如果B类中么有,则继续去D类中找,如果D类中么有,则继续去C类中找,如果还是未找到,则报错

        新式类:首先去A类中查找,如果A类中没有,则继续去B类中找,如果B类中么有,则继续去C类中找,如果C类中么有,则继续去D类中找,如果还是未找到,则报错

        注意:在上述查找过程中,一旦找到,则寻找过程立即中断,便不会再继续找了。


收藏(0)0
查看评分情况

全部评分

此主贴暂时没有点赞评分

总计:0

回复分享

版主推荐

    共有1条评论

    • Mr ken
    • YUI
    • cappuccino
    • mr jack
    • IT宅男
    • Mright
    • 选择版块:

    • 标题:

    • 内容

    • 验证码:

    • 标题:

    • 内容

    • 选择版块:

    移动帖子x

    移动到: