一、多态
1、定义
同一操作作用于不是同的对象,可以有不同的解释,产生不同的执行结果,这就是多态性。它是通过派生类覆写基类中的虚函数来实现。
2、分类
♦编译时
编译时的多态是通过重载来实现的,对于非虚的成员来说,系统再编译时,根据传递的参数、返回的类型等信息决定实现何种操作。
♦运行时
是指直到系统运行时,才根据实际情况决定实现何种操作,C#中运行的多态是通过覆写虚成员实现。
3、重载和覆写的区别:
重载:方法名必须相同,参数列表必须不同,返回值可以不相同。
覆写:子类中为满足自己的需要来重复某个方法的不同实现。通过使用override关键字来实现覆写,只有虚拟方法和抽象方法才能被覆写。但是跟重载不一样的是要求相同的方法名,相同的参数列表,相同的返回值类型。
举个形状的例子:
二、接口
派生自IPict接口
例如:
三、多重接口的实现
四、显示接口的实现
在C#中,只要不发生命名冲突,就完全可以允许多重接口的实现。例如:
又如下电梯开关的例子: