第50课 多态性


多态性是类的重要特性,多态从字面来理解是多种形态的意思。
在Python中,多态也是通过继承来体现的。调用相同的父类方法,对象会因为从属于不同的子类,相同的方法会得出不同的结果。

我们来举一个例子:动物都会说话,但是他们的语言是不同的。例如,狗狗是“汪汪汪”,老虎是“嗷呜”,人可以说中文。
我们来分析一下:
在Animal类中定义一个talk()函数,表示说话的方式。
定义以下4个子类。
·Dog子类:狗狗类,实现拓展talk()函数,说话的方式是“汪汪汪”。
·Tiger子类:老虎类,实现拓展talk()函数,说话的方式是“嗷呜”。
·Person子类:人类,实现拓展talk()函数,说话的方式是“中文”。
·Cat子类:猫咪类,没有实现拓展talk()函数。
创建子类的对象并调用talk()方法,看程序会有什么让人意外的输出。

程序运行结果如下:
在说中文lily
小狗狗在叫,汪汪汪
老虎在叫,嗷呜
猫咪在叫
在程序中,创建了Animal类,父类Animal拥有4个子类,分别是Person类、Dog类、Tiger类、Cat类。
在Animal类中定义了talk()函数,在4个子类中,Person类、Dog类、Tiger类分别按照自己的方式对talk()函数进行拓展,但是Cat类没有对talk()函数进行拓展。

在主程序中,我们创建了4个子类的对象,并且都调用了talk()方法。
因为Person类、Dog类、Tiger类都实现了自己的talk()方法,所以当对象调用talk()方法时,都按照各自的说话方式说话。Cat类没有实现自己的talk()方法,所以按照父类Animal中定义的talk()方法来实现。



在主程序中,不同子类的对象调用了同样的talk()方法,程序却打印出了不同的结果,这就是多态。相同的函数,针对不同的子类实例,拥有不同的形态,不同的行为。
类与对象小结
(1)创建类的语法:
class类名:
属性和方法定义
(2)创建类的实例对象的语法:
对象名=类名()
(3)对象属性:
①通过对象名属性名具体属性设置对象的具体属性。
②通过对象名属性名来获取。
③通过__init__()方法来初始化属性。
(4)在类中,动作是通过函数来定义的。
(5)类的三个特性:
①封装性:类可以将数据和逻辑封装起来,使用的人并不关心具体的逻辑,调用类提供的方法完成相应的操作就可以了。
②继承性:通过继承我们可以使用原有类的所有功能,并且在原有类的基础上进行拓展。
③多态性:通过继承来体现。对象会因为从属于不同的子类,调用相同的父类方法,体现出不同的形态。
类与对象小挑战
(1)创建一个王者荣耀的英雄类,具有名字属性、皮肤属性、血量属性、技能属性。
(2)选一个你喜欢的英雄创建英雄类的对象。
(3)为英雄类创建释放技能方法。
(4)分别创建智力型英雄类、力量型英雄类、敏捷型英雄类作为英雄类的子类。
(5)针对不同的子类:智力型英雄类、力量型英雄类、敏捷型英雄类作为英雄类,拓展释放技能方法。
第9章 注释帮助我们理解

程序员问:你写程序的时候最讨厌什么?A“”
程序员答:最讨厌写注释。B“”
程序员问:你看程序的时候最讨厌什么?A“”
程序员答:最讨厌别人的程序没有注释。B“”
写程序时,我们需要克服自己讨厌的,不做别人讨厌的。这样才是一名优秀的编程勇士。其实写注释也没那么讨厌,注释可以帮助我们理解代码,唤起程序思路的记忆,还能帮助他人快速看懂我们编写的代码。