多态是同一个行为具有多个不同表现形式或形态的能力
多态性意味着有多重形式,在面向对象编程范式中,多态性往往表现为“一个接口,多个功能”
多态性可以是静态的也可以是动态的,在静态多态性中,函数的响应是在编译的时候发生的,在动态多态性中,函数的响应是在运行时发生的。
在C#中,每个类型都是多态的,因为包括用户定义类型在内的所有类型都继承自Object
1、静态多态性
在编译时,函数和对象的连接机制被称为早期绑定,也称为静态绑定,C#提供了两种技术来实现静态多态性,分别是:函数重载和运算符重载
函数重载和java类似
2、动态多态性
C#可以使用关键字abstract创建抽象类,用于提供接口的部分类的实现,当一个派生类继承自该抽象类的时候,实现即完成。抽象类中包含抽象方法,抽象方法可以被派生类实现,派生类具有更专业的功能
抽象类的一些规则:
不能创建一个抽象类的实例
不能在一个抽象类外部声明一个抽象方法
**通过在类定义前面放置关键字sealed,可以将类声明为密封类,当一个类被声明为sealed时,该类不能被继承。抽象类不能被声明为sealed
当有一个定义在类中的函数需要在继承类中实现时,可以使用虚方法
虚方法是使用关键字virtual声明的
虚方法可以在不同的继承类中有不同的实现
对虚方法的调用是在运行时发生的
动态多态性是通过抽象类和虚方法实现的