多态的理解以及作用

简介: 多态的理解以及作用

一、多态是什么

 多态在面向对象中的定义:指为不同数据类型的实体提供统一的接口。

 比如有动物(Animal)之类别(Class),而且由动物继承出类别鸡(Chicken)和类别狗(Dog),并对同一源自类别动物(父类)之一消息有不同的响应,如类别动物有“叫()”之动作,而类别鸡会“啼叫()”,类别狗则会“吠叫()”,则称之为多态。


二、多态的类型

  多态分为静态多态和动态多态。

  • 静态多态:在编译期间实现多态,相同的方法传递不同的参数,实现不同的效果。

  C++代码实现:

// print()函数
void print(const char* str,int width);
void print(double i ,int width);
void print(const char* str);
// 使用print()函数时,编译器将根据所采取的用法使用有相应特征标的原型
print("abc",12);
print(2.2,55);
print("def");
  • 动态多态:在运行期间实现多态,一个类的引用可以被赋值为不同的子类对象。

   实现动态多态的必要条件:

  • 编程语言要支持继承
  • 子类可以重写(override)父类中的方法
  • 父类引用可以指向子类对象


  C#代码实现:

public class AnimalFactory{
  public static Animal createAnimal(string type){
    Animal animla=null;
    switch(type){
      case "cat":
        animal=new Cat();
        break;
      case "bird":
        animal=new Bird();
        break;
      case "dog":
        animal=new Dog(); 
        break;
    }
  }
}

三、多态解决什么问题

  1. 应用程序不必为每一个子类编写功能调用,只需要对父类进行处理即可。大大提高程序的可复用性。
  2. 子类的功能可以被父类的方法或引用变量所调用,就像Animal类,可以提高可扩充性和可维护性。
相关文章
|
12月前
|
JSON 小程序 JavaScript
uni-app开发微信小程序的报错[渲染层错误]排查及解决
uni-app开发微信小程序的报错[渲染层错误]排查及解决
2578 7
|
10月前
|
数据挖掘 数据处理 索引
Pandas数据重命名:列名与索引为标题
Pandas 是强大的数据分析工具,支持灵活的数据结构和操作。本文介绍如何使用 Pandas 对 `DataFrame` 的列名和索引进行重命名,包括直接赋值法、`rename()` 方法及索引修改。通过代码示例展示了具体操作,并讨论了常见问题如名称冲突、数据类型不匹配及 `inplace` 参数的使用。掌握这些技巧可使数据更清晰易懂,便于后续分析。
554 29
|
11月前
|
搜索推荐 数据挖掘 UED
中小企业CRM解决方案排名:性价比之选
中小企业在选择CRM系统时面临的主要痛点包括预算有限、需求多样、IT资源匮乏等。因此,他们需要寻找高性价比、功能全面、操作简便且具备灵活性和可扩展性的解决方案。本文推荐了纷享销客、Zoho CRM、Apptivo和简道云CRM等几款适合中小企业的CRM系统,这些系统不仅能满足企业的多样化需求,还能助力企业高效管理客户关系,提升销售业绩。
|
设计模式 开发框架 安全
PHP开发框架对比:Laravel、Yii、Tp、Yaf、Swoole
Laravel是一套简洁、优雅的PHP 框架(PHP Web Framework)。让我们可以从杂乱的代码中解脱出来。Laravel可以帮你构建一个完美的网络APP,而且每行代码都可以简洁、富于表达力。
923 0
|
JavaScript 前端开发 测试技术
探索 Snabbdom 模块系统原理 上
探索 Snabbdom 模块系统原理 上
266 0
|
程序员
关于招聘:如何短时间全面评估一个程序员的能力
云栖社区有很多类似的讨论,有很多评估方式,之前好像在一些文章里也表达过自己的看法,但是在招聘时,时间很有限,最多也就一两小时,如何在这么短时间内评估一个人的技术能力呢?是个有意思的问题。我也招过一些技术人员,我觉的有两点很重要,也很简单。
3540 0
|
SQL 程序员 索引
从优化的角度浅谈医院his以及社保系统
由于特殊的原因,本人参与医院his以及社保的维护工作,本单位使用his为 军惠,社保系统有两套,一套为东软的,一套为长沙创智的。如果站在性能 优化的角度考虑,这些系统我可以讲都是失败的,或者需要重写代码。
1351 1
|
监控 安全 架构师
企业面临的10大物联网安全风险及应对策略
2020 年,随着 5G 部署持续推出,攻击也将接踵而至。