DAY8多态

多态概念

所谓多态:多种形态、状态,定义时的类型和运行时的类型不一样,此时就称为多态。

补充:多态就是同一种行为,对于不同的子类【确切的来说,子类对象】,有不同的行为表现。

python不支持java和C#这一类强类型语言中多态的写法,但是原生多态,python崇尚“鸭子类型",利用python伪代码实现java和C#的多态。

实现多态需要两个前提
1、继承:多态必须发生在父类和子类之间
2、重写:子类重写父类的方法

演示:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
这就是多态很典型的一个实现【在每个子类中有不同的表现】,多态的优势就是上面所演示的,可用一个函数去调用全部的类,我们不需要去用下面的方法去挨个调用
在这里插入图片描述
为什么用一个函数去调用全部的类是一个优势呢?因为当我们增加一个新的子类的时候,我们只需要写出子类函数,不需要单独调用,扩展很容易

如下面增加一个鸟类的子类
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
多态有什么用?
增加程序的灵活性
增加程序的扩展性

补充
鸭子类型:在程序设计中,鸭子类型(英语duck typing)是动态类型的一种风格。在这种风格中,一个对象有效的语义,不是由继承自特定的类或者实现特定的接口,而是由当前方法和属性的集合决定。
“鸭子测试”可以这样表述:当看到一只鸟走起来像鸭子、游泳起来像鸭子、叫起来也像鸭子,那么这只鸟就可以被称为鸭子。

在鸭子类型中,关注的不是对象的类型本身,而是它是如何使用的。

举例
比如我们在原来的动物类的代码中增加一个人的类
在这里插入图片描述
虽然属于不同的类,但我们依然可以统一调用他
在这里插入图片描述
在这里插入图片描述
python并不关心他们分属于哪个类,只是他们的里面都有say_who这个函数,我们就可以把他们视为同一个类型,统一调用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值