面向对象编程-多态

news2024/11/14 14:08:29

一、多态的引入

1、先看一个问题

2、使用传统的方法类解决

class Food:
    name=None

    def __init__(self,name):
        self.name=name

class Fish(Food):
    pass

class Bone(Food):
    pass

class Animal:
    name=None

    def __init__(self,name):
        self.name=name

class Cat(Animal):
    pass

class Dog(Animal):
    pass

class Master:
    name=None

    def __init__(self,name):
        self.name=name

    # 给猫猫喂鱼
    def feed_cat(self,cat:Cat,fish:Fish):
        print(f"主人:{self.name} 给动物:{cat.name} 喂的食物是:{fish.name}")

    # 给小狗喂骨头
    def feed_dog(self,dog:Dog,bone:Bone):
        print(f"主人:{self.name} 给动物:{dog.name} 喂的食物是:{bone.name}")

# 测试
master=Master("小明")
cat=Cat("小花猫")
fish=Fish("黄花鱼")
dog=Dog("大黄狗")
bone=Bone("大棒骨")

master.feed_cat(cat,fish)
master.feed_dog(dog,bone)

问题分析:如果动物/食物的种类很多,怎么办?

传统的方法带来的问题是什么?如何解决?

1)问题是:代码的复用性不高,而且不利于代码维护和功能扩展

2)解决方案:引出->多态

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2042566.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

STM32F103-固件库开发-keil一些警告解决-中断机制-NVIC-简单按钮电灯流程及其代码;

1、固件库和HAL库 固件库(Standard Peripheral Library,通常被称为SPL)和HAL库(Hardware Abstraction Layer,硬件抽象层)都是STMicroelectronics(ST)为STM32系列微控制器提供的软件…

腾讯云AI代码助手:智能编程的新篇章,大家的代码开发伙伴

文章目录 一、前言二、开发环境介绍三、腾讯云AI代码助手使用实例1、案例一:代码补全2、案例二:代码注释和解释等3、案例三:与AI对话实现需求 四、获得的帮助与提升五、建议六、结语 一、前言 随着人工智能技术的飞速发展,其在各…

SWIPT综述

TS PS Hybrid TSPS ρ 和 α 的最优值以及确定继电器的最优位置可以最小化系统的 OP。 SWIPT CoR with non-linear EH, the hybrid protocol performs better than TSR as well as PSR protocols in terms OP. 波束成形:多天线 SWIPT CoR NETWORKS 多天线系统在 5…

自制神之嘴: fish-speech 容器镜像 (文本转语音 AI 大模型)

穷, 没有 N 卡 ! 穷, 没有 N 卡 ! 穷, 没有 N 卡 !! (重要的事情说 3 遍. ) 最近发现了一个很新的 AI (神经网络) 文本转语音大模型: https://speech.fish.audio/ fish-speech 可以根据输入的文本, 生成高质量的人类说话声音, 效果挺好的. fish-speech 官方已经提供了容器 (d…

2.3 不同数据库管理系统的比较与应用场景

欢迎来到我的博客,很高兴能够在这里和您见面!欢迎订阅相关专栏: 工💗重💗hao💗:野老杂谈 ⭐️ 全网最全IT互联网公司面试宝典:收集整理全网各大IT互联网公司技术、项目、HR面试真题.…

[LitCTF 2024]浏览器也能套娃?

题目有标志SSRF SSRF(Server-Side Request Forgery:服务器端请求伪造) 是一种由攻击者构造形成由服务端发起请求的一个安全漏洞。一般情况下,SSRF攻击的目标是从外网无法访问的内部系统。(正是因为它是由服务端发起的,所以它能够请求到与它相…

背包九讲(灵魂版)

文章目录 背包九讲[题库 - AcWing](https://www.acwing.com/problem/search/1/?search_content背包九讲&show_algorithm_tags0)01背包朴素代码一维优化代码 完全背包朴素代码一维优化代码 多重背包I 模板题代码 多重背包 II 二进制优化代码 多重背包 III 单调队列优化代码…

[算法题]01 矩阵

题目链接: 01 矩阵 多源BFS类型题, 即给定多个起点, 判断从哪个起点走到终点距离最短, 一般解题思路为将所有起点看成一个"起点", 由此"起点"做bfs得到题解, 实际代码编写将所有起点都入队列, 每次都对所有起点做一层扩展. 题解思路: 从1往0处走寻找最短…

kali-linux 常用命令大集合(目录、文件查看与编辑,登录、电源、帮助等相关命令详解)

目录 目录查看-ls 帮助命令 帮助命令:whatis 帮助命令:help 帮助命令:man 帮助命令:info 登录命令 登录命令:login 登录命令:last 登录命令:exit 切换用户:su/sudo 命令-…

嵌入式学习day17(顺序表)

大纲 线性表是最基本、最简单、也是最常用的一种数据结构,可以存储逻辑关系为线性的数据。线性表(linear list)是数据结构的一种,一个线性表是n个具有相同特性的数据元素的有限序列。 分类: 顺序表、单向链表、单向循环…

WhatsApp代理地址:如何成功连接WhatsApp?

所有外贸人都非常需要通过WhatsApp与客户沟通,简直是搞钱“生命线”!但是,很多老板在后台抱怨说自己一直登不进去,99.99%是你网络问题。很多外贸人找的代理IP来路不明或者滥竽充数,要和很多人一起共用IP或者IP地址总是…

【PGCCC】使用 Postgres 递归 CTE 进行图形检索

您是否知道可以将 Postgres 用作某些用例的图形数据库? 假设您有如下图表: 我们可以在 NetworkX 中构建此图: 1import networkx as nx23G nx.Graph()45G.add_edges_from([6 ("A", "B"),7 ("A", "…

HAproxy 七层负载均衡调度器详解及配置

HAproxy 七层负载均衡 负载均衡技术 负载均衡(Load Balance):一种服务,或基于硬件设备实现的高可用的反向代理技术,是指将特定的业务流量分摊给一个或多个后端的特定服务器或设备,实现高并发处理业务流量…

KNN算法原理

KNN(K-Nearest Neighbors,K最近邻)算法是一种基本且广泛使用的分类与回归方法。在分类任务中,KNN的输入为实例的特征向量,对应于特征空间的点;输出为实例的类别,可以取为类别集合中任意一个类别…

深入解析Java设计模式之中介者模式

一、什么是中介者模式 中介者模式(Mediator Pattern)是Java设计模式中的一种行为型模式。在中介者模式中,一个中介者对象封装了一系列对象之间的交互,使对象之间不直接相互通信,而是通过中介者对象进行通信。这种模式有…

VM——深度学习算子GPU版本耗时不稳定

1、问题:使用3080TI显卡4台130万相机,GPU版本算子,耗时不稳定,15ms-150ms波动 2、方法: 1)参考海康提供的问题手册

Java面试题--JVM大厂篇之JVM 内存管理深度探秘:原理与实战

目录 引言: 正文: 1. JVM内存管理的基本原理 痛点一:频繁的Minor GC 2. 内存分配与回收案例 3. 避免内存泄漏的技巧 痛点二:未关闭的资源 痛点三:静态集合类持有对象引用 4. 优化内存使用的技巧 痛点四:对象过多占用内存…

超越自我——带你学haproxy算法一遍过!!!

文章目录 前言介绍 静态算法static-rrfirst 动态算法roundrobinleastconn 其他算法source算法map-base 取模法一致性hashuriurI_param 取模法hdr 总结本文相关连接如下: 前言 本文相关连接如下: 如果想更多了解haproxy的相关知识,请点击&am…

考试:操作系统知识(03)

分区存储管理 所谓分区存储组织,就是整存,将某进程运行所需的内存整体一起分配给它,然后再执行。有三种分区方式: 固定分区:静态分区方法,将主存分为若干个固定的分区,将要运行的作业装配进去…

ArcGIS Pro 实现人口分布栅格TIFF数据的网格提取与可视化

这里在分享一个人口1km精度栅格数据,LandScan是由美国能源部橡树岭国家实验室(ORNL)提供的全球人口分布数据集,具有最高分辨率的全球人口分布数据,是全球人口数据发布的社会标准,是全球最为准确、可靠&…