博客
关于我
[python面向对象学习笔记四] 多态
阅读量:324 次
发布时间:2019-03-04

本文共 1053 字,大约阅读时间需要 3 分钟。

1. 概念

多态(Polymorphism)是面向对象编程中一个核心概念,它描述了不同子类对象调用相同父类方法时,能够产生不同的执行结果的现象。 多态的实现通常依赖于继承和方法的重写(override)。通过这种机制,系统可以在不修改已有代码的情况下,扩展功能,提高程序的灵活性和可维护性。

2. 案例分析

在现实生活中,多态的表现形式比在编程中更为常见。以人与狗的互动为例: - **普通狗**:当你和一只普通的狗一起玩耍时,它会按照普通狗的行为模式响应你的互动。 - **哮天犬**:与此同时,一只哮天犬可能会根据其独特的品种特征,表现出不同的行为,比如飞翔或追逐。

在编程中,我们可以通过类继承和方法重写来模拟这种现象。以下是一个简单的Python示例:

# 基类Dogclass Dog(object):    def __init__(self, name):        self.name = name    def game(self):        print("%s 在快乐的玩耍..." % self.name)# 子类XiaoTianDogclass XiaoTianDog(Dog):    def game(self):        print("%s 飞到天上快乐的玩耍..." % self.name)# 人类类class Person(object):    def __init__(self, name):        self.name = name    def person_with_game(self, dog):        print("%s 和 %s 正在一起玩耍" % (self.name, dog.name))        dog.game()# 实例化wangcai = Dog("旺财")  xiaoming = Person("小明")  xiaoming.person_with_game(wangcai)

在这个例子中:

  • Dog类定义了一个game方法,用于表示狗在玩耍。
  • XiaoTianDog继承自Dog,并对game方法进行了重写,表示哮天犬有不同的玩耍方式。
  • Person类创建了一个person_with_game方法,能够接受任何实现了game方法的狗对象作为参数,这使得系统能够灵活地处理不同类型的狗。

通过这种方式,只需传递不同的狗对象实例,程序就会调用相应的方法,产生不同的执行结果,从而体现了多态的特点。

转载地址:http://egjq.baihongyu.com/

你可能感兴趣的文章
Numpy.fft.fft和numpy.fft.fftfreq有什么不同
查看>>
Numpy.ndarray对象不可调用
查看>>
Numpy如何使用np.umprod重写range函数中i的python
查看>>
numpy数组替换其中的值(如1替换为255)
查看>>
numpy数组索引-ChatGPT4o作答
查看>>
numpy转PIL 报错TypeError: Cannot handle this data type
查看>>
NutzCodeInsight 2.0.7 发布,为 nutz-sqltpl 提供友好的 ide 支持
查看>>
NUUO网络视频录像机 css_parser.php 任意文件读取漏洞复现
查看>>
NVelocity标签使用详解
查看>>
nvidia-htop 使用教程
查看>>
oauth2-shiro 添加 redis 实现版本
查看>>
OAuth2.0_JWT令牌-生成令牌和校验令牌_Spring Security OAuth2.0认证授权---springcloud工作笔记148
查看>>
OAuth2.0_JWT令牌介绍_Spring Security OAuth2.0认证授权---springcloud工作笔记147
查看>>
OAuth2.0_介绍_Spring Security OAuth2.0认证授权---springcloud工作笔记137
查看>>
OAuth2.0_完善环境配置_把资源微服务客户端信息_授权码存入到数据库_Spring Security OAuth2.0认证授权---springcloud工作笔记149
查看>>
OAuth2.0_授权服务配置_Spring Security OAuth2.0认证授权---springcloud工作笔记140
查看>>
OAuth2.0_授权服务配置_令牌服务和令牌端点配置_Spring Security OAuth2.0认证授权---springcloud工作笔记143
查看>>
OAuth2.0_授权服务配置_客户端详情配置_Spring Security OAuth2.0认证授权---springcloud工作笔记142
查看>>
OAuth2.0_授权服务配置_密码模式及其他模式_Spring Security OAuth2.0认证授权---springcloud工作笔记145
查看>>
OAuth2.0_授权服务配置_资源服务测试_Spring Security OAuth2.0认证授权---springcloud工作笔记146
查看>>