python中的多态和抽象类接口

news/2024/11/8 16:40:02/

目录

一.多态

抽象类(接口)

 小结


 

一.多态

多态,指的是:多种状态,即完成某个行为时,使用不同的对象会得到不同的状态。

 同样的行为(函数),传入不同的对象得到不同的状态

演示

class Animal():def clock(self):pass
class Dog(Animal):def clock(self):print("汪汪汪")class Cat(Animal):def clock(self):print("喵喵喵")def hall(animal:Animal):animal.clock()dog=Dog()
cat=Cat()
hall(dog)
hall(cat)

结果是

 多态也多会用在抽象类的场景上

抽象类(接口)

细心的同学可能发现了,父类Animal的speak方法,是空实现

 这种设计的含义是:

  • 父类用来确定有哪些方法
  • 具体的方法实现,由子类自行决定

这种写法,就叫做抽象类(也可以称之为接口)
抽象类:含有抽象方法的类称之为抽象类
抽象方法:方法体是空实现的( pass)称之为抽象方法

为什么要使用抽象类呢?

抽象类就像一个标准,提出标准之后,就由后面的继承类去具体实现

 抽象类就好比定义一个标准,
包含了一些抽象的方法,要求子类必须实现。

演示

class AC:def cool_wind(self):passdef hot_wind(self):passdef swing_l_r(self):pass
class Mide_AC(AC):def cool_wind(self):print("美的制冷")def hot_wind(self):print("美的制热")def swing_l_r(self):print("美的左右摆风")class Gree_AC(AC):def cool_wind(self):print("格力制冷")def hot_wind(self):print("格力制热")def swing_l_r(self):print("格力左右摆风")def cool(a:AC):a.cool_wind()a.hot_wind()
mide=Mide_AC()
gree=Gree_AC()
cool(mide)
cool(gree)

结果是

 小结

1.什么是多态?
多态指的是,同一个行为,使用不同的对象获得不同的状态。
如,定义函数(方法),通过类型注解声明需要父类对象,实际传入子类对象进行工作,从而获得不同的工作状态
2.什么是抽象类(接口)
包含抽象方法的类,称之为抽象类。抽象方法是指:没有具体实现的方法( pass)称之为抽象方法
3.抽象类的作用
多用于做顶层设计(设计标准),以便子类做具体实现。
也是对子类的一种软性约束,要求子类必须复写(实现)父类的一些方法
并配合多态使用,获得不同的工作状态。

 


http://www.ppmy.cn/news/9017.html

相关文章

植物大战僵尸:代码实现无限阳光

通过逆向分析植物阳光数量的动态地址找到阳光的基址与偏移,从而实现每次启动游戏都能够使用基址加偏移的方式定位阳光数据,最后我们将通过使用C语言编写通用辅助实现简单的无限阳光辅助,在教程开始之前我们先来说一下为什么会有动态地址与基址…

[项目说明]-基于人工智能博弈树,极大极小(Minimax)搜索算法并使用Alpha-Beta剪枝算法优化实现的可人机博弈的AI智能五子棋游戏。

个人选题项目 基于人工智能博弈树,极大极小(Minimax)搜索算法并使用Alpha-Beta剪枝算法优化实现的可人机博弈的AI智能五子棋游戏。 设计目标及主要内容 本系统是根据传统五子棋游戏的功能编写,其功能实现了基于AI人工智能算法实现智能的人机对弈五子棋…

如何用LightningChart创建Android图表数据可视化应用程序?(下)

LightningChart JS 是一款高性能的 JavaScript 图表工具,专注于性能密集型、实时可视化图表解决方案。 LightningChart .JS | 下载试用(qun:740060302)https://www.evget.com/product/4189/download 在上一篇,我们介…

如何避免无效外贸邮件营销?

如何避免无效的邮件营销,米贸搜为您整理如下,希望对您有所帮助:1 .和邮件正文一样重视主题主题对于电子邮件就像标题对于文章或博客一样重要。即使你有全宇宙最吸引人的散文诗,或者最吸引人的求婚,如果根本没有人打开这封邮件&…

S32K144—什么是SBC系统基础芯片?

SBC(System Basis Chip)芯片在汽车电子领域可谓占一席之地了。那么什么是SBC?怎么用?用在哪里?主要特性? 可以简单理解成:SBC是一类拥有特出功能(电源、通信、监控诊断、安全&#…

B树的原理及代码实现、B+树和B*树介绍及应用

目录 一.B树介绍 (一).B树存在意义 (二).B树的规则 二.B树实现原理及代码 (一).实现原理 (二).代码 三.B树 (一).概念 (二).应…

头歌:Ping服务端创建UDP套接字(底部附全关完整答案)

头歌实践教学平台 (educoder.net)在 Ping 的 服务程序中 创建一个使用 UDP 协议的 套接字数据包套接字类型套接字三种类型:流式套接字(SOCK_STREAM),数据包套接字(SOCK_DGRAM)及原始套接字(SOCK_RAW)数据包格式套接字(Datagram So…

10天,几万字,源码深度解析之 Spring IOC

历时 10 天,终于把 Sping 源码系列写完了,该系列一共 5 篇,后续会整理成 PDF 教程,本文是最后一篇。 这篇文章主要讲解 IOC 容器的创建过程,让你对整体有一个全局的认识,文章没有复杂嵌套的 debug 流程&am…