• 青少年python系列 44.面向对象-多态


    青少年python教学视频ppt源码

    青少年ptyhon可以参加的主流比赛大全_老程序员115的博客-CSDN博客
     

            上课了,老师说:“请每位同学回到自己的座位上坐好,那么此刻小吉同学就会找自己的座位坐好,小码同学也会找自己的座位坐好。虽然老师说的都是“自己的座位”,但“自己”却表示的是不同的个人,“座位”对于每个人来说都是“我的座位”,而不是他人的座位,这就是生活中的多态性

            类编程中就是:虽然都是同一个变量(“自己”)调用同一个的方法(“座位”),但该方法属于哪个类的对象(如“小吉同学”对象),完全是由程序在执行时(上课前执行到“找座位”环节)确定的(小吉找到他自己的座位,而不是其他人的座位),这就是类编程中的多态性!

            以上,都是生活与编程中的多态性,而多态不是多态性,在下面的课程中我们将对两者进行一个深入的了解与区分。

    1 多态

            多态指的是一类事物有多种形态,(一个类有多个子类,因而多态的概念依赖于继承)

    例如,在自然界中,有植物与动物,动物这一分支下又有哺乳动物比如小狗,也有卵生动物比如小鸡,这就是自然界中的多态。

            而在程序中,多态指同一个方法调用,由于对象不同可能会产生不同的行为。

            一个类它继承了一个类,但是它又改写了它父类的方法,这样在调用这个方法时,就会因为实例对象的不同而调用的方法不同,也就是说看这个实例对象实例化时是用父类实例化的,还是子类实例化的,是父类实例化的,结果就是父类的方法,是子类实例化的,结果就是子类的方法。

    我们来定义一个动物父类,我们都知道,自然界的动物种类有很多,有人、小鸟、小狗等等

            我们再创建两个子类,人与小狗,分别继承了父类中的属性与方法。

            此时,我们再定义一个animal_age函数作为类 Animal 的实例

            我们可以发现在实际执行过程中 Animal 的子类 Man 和 Dog 的示例同样可以在 animal_age 函数中正常运行,这即是类的多态的作用。

            在 python 中多态的经典使用可以用两句话来总结:对扩展开放和对修改封闭,即著名的「开闭」原则。对扩展开放即可以随意的增加父类的子类;对修改封闭即对于依赖父类的函数,新增子类对该函数无任何影响无需做任何修改。

    2 多态性

            多态性是编程中同一个操作因作用实例不同而表现出不同实现方式的特性。具有不同功能的函数可以使用相同的函数名,这样就可以用一个函数名调用不同内容的函数。在面向对象方法中一般是这样表述多态性:向不同的对象发送同一条消息,不同的对象在接收时会产生不同的行为(即方法)。也就是说,每个对象可以用自己的方式去响应共同的消息。所谓消息,就是调用函数,不同的行为就是指不同的实现,即执行不同的函数。

            我们来定义了四个类,分别是Animal类、People类、Dog类和Pig类,其中People类、Dog类和Pig类都继承了Animal类。

            这四个类都有一个talk()方法。试着调用talk()方法。

            我们定义一个功能函数Func()来调用talk()方法,我们可以看到用Func()函数为同一个操作,但调用的参数是不同的,即调用了不同的实例作为参数。

            由运行结果可知,有不同的类创建不同的实例,以不同的实例作为参数时,调用talk()得到的打印结果是不同的,这是因为每个实例具有不同的实现方式,这就是多态性的体现。

            Python中的多态性增加了程序的灵活性,以不变应万变,无论实例千变万化,使用者都是以同一种形式去调用;多态性还增加了程序可扩展性,通过继承创建新的类,子类可以使用父类的方法,也可以使用自己重写的方法。

    总结

    1、多态

    多态指的是一类事物有多种形态,(一个类有多个子类,因而多态的概念依赖于继承)

    2、多态性

    多态性是编程中同一个操作因作用实例不同而表现出不同实现方式的特性。

  • 相关阅读:
    NLP的数据增强技术总结
    Java框架篇(来自硅谷的面试题)
    pdf怎么压缩的小一点?
    Python爬虫之爬取并下载哔哩哔哩视频
    遗失的访谈 —— 关于软件与硬件的人生
    Spring中添加打印请求头的拦截器
    拼多多API_根据关键词取商品列表
    Win10开机桌面无限刷新的解决方法
    持续集成/持续部署:Git
    如何使用SQL系列 之 如何在SQL中使用嵌套查询
  • 原文地址:https://blog.csdn.net/u012284021/article/details/127822873