c#多态的理解以及作用

作者: cheng 发布时间: 2022-10-24 浏览: 1132 次 编辑

多态的理解以及作用

一、多态是什么

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

比如有动物(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类,可以提高可扩充性和可维护性。