欢迎来到山海君的博客

遇见你,就像跋山涉水遇到一轮月亮,以后天黑心伤,就问那天借一点月光【天堂旅行团】  

c#多态性

c#多态性
多态是同一个行为具有不同的表现形式或形态的能力
多态性意味着有多重形式。在面向对象编程范式中,多态性往往表现为“一个接口,多个功能”
多态性可以是静态的也可以是动态的。在静态多态性中,函数响应是在编译时发生的。在动态多态性中,函数的响应是在运行时发生的。
在c#中,每个类型都是多态的,因为在包括用户定义类型在内的所有类型都继承object。
多态就是同一接口,使用不同实例而执行不同操作,如图所示


静态多态性
在编译时,函数和对象的连接机制被称为早期绑定,也被称为静态绑定。c#提供了两种技术来实现静态多态性。分别为:
·函数重载
·运算符重载
函数重载
你可以在同一个范围内对相同的函数名有多个定义。函数的定义必须彼此不同,可以是参数列表的参数类型不同,也可以是参数个数不同。不能重载只有返回类型不同的函数声明。

动态多态性
c#允许使用关键字abstract创建抽象类,用于提供接口的部分类的实现。当一个派生类继承自该抽象类时,实现即完成。抽象类包含抽象方法,抽象方法可以被派生类实现。派生类具有更专业的功能。
抽象类的规则:
不能创建抽线类的实例
不能在抽象类外部声明抽象方法
通过在类定义前面放置关键字sealed,可以声明一个密封类。当类被声明为sealed时,它不能被继承。抽象类不能被声明sealed

当有一个定在类中的函数需要在继承类中实现,可以使用虚方法
虚方法是使用关键字virtual声明的
虚方法可以在不同继承类中有不同的实现
对虚方法的调用是在运行时发生的
动态多态性是通过抽象类跟虚方法实现的

posted @ 2021-12-08 16:02  山海君  阅读(58)  评论(0)    收藏  举报