多态的理解以及作用

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

一、多态是什么

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

 比如有动物(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类,可以提高可扩充性和可维护性。
相关文章
|
6月前
|
Java 编译器
动态多态与静态多态
动态多态与静态多态
83 0
|
23天前
实现多态的多种方式
【10月更文挑战第19天】这些多态的实现方式各有特点,在不同的场景中可以灵活运用,以提高代码的灵活性、可扩展性和复用性。
97 63
|
29天前
多态和动态绑定的区别是什么?
【10月更文挑战第14天】多态和动态绑定是面向对象编程中两个重要的概念,但它们有着不同的含义和作用。
21 2
|
5月前
|
C++
C++一分钟之-继承与多态概念
【6月更文挑战第21天】**C++的继承与多态概述:** - 继承允许类从基类复用代码,增强代码结构和重用性。 - 多态通过虚函数实现,使不同类对象能以同一类型处理。 - 关键点包括访问权限、构造/析构、菱形问题、虚函数与动态绑定。 - 示例代码展示如何创建派生类和调用虚函数。 - 注意构造函数初始化、空指针检查和避免切片问题。 - 应用这些概念能提升程序设计和维护效率。
39 2
|
6月前
|
存储 安全 编译器
【C/C++ 多态核心 20240115更新】C++虚函数表:让多态成为可能的关键
【C/C++ 多态核心 20240115更新】C++虚函数表:让多态成为可能的关键
51 0
|
6月前
|
编译器 C++
[C++] 面向对象的三大特性:封装、继承和多态
[C++] 面向对象的三大特性:封装、继承和多态
80 0
|
Java C++
面对对象三大特性:封装、继承、多态
面对对象三大特性:封装、继承、多态
|
Java
面向对象编程基础:类、对象、封装、继承和多态
面向对象编程基础:类、对象、封装、继承和多态
110 0
浅谈 面向对象三大特性:封装 继承 多态
浅谈 面向对象三大特性:封装 继承 多态
90 0
动态绑定,多态(带你从本质了解多态)(下)
动态绑定,多态(带你从本质了解多态)