多态

多态可以理解为事物存在的多种体现形式。如人:男人、女人; 动物:猫、狗

C#中有接口多态 继承多态 抽象多态

C#中所有的类多是多态的,因为所有的类都是继承object类型。

除了字段外,属性、事件和索引器都可以是虚拟的。

接口主要用于多态化方法。

抽象类,多用于多态对象。

接口和抽象类都是多态,接口和抽象类的使用环境
横看接口竖看类:横向扩展使用接口;纵向扩展使用抽象基类;横向和纵向都要扩展,使用抽象基类继承接口
在差异较大的对象中追求功能上的共性时,使用接口。
在差异较小的对象中追求功能上的不同时,使用抽象基类,因为抽象基类可以包含实现的成员。

多态总结:

1,多态就是体现为一种动作或操作在不同实例上,表现的结果或实现有所不同。

2,多态分为基类继承式多态和接口实现式多态。基类继承式多态是通过继承来实现的,其实我们平时继承中就有这样一种情况 Files file=new WordFile();file.open();而接口实现式多态是通过实现接口的方法约定形成的继承体系,它体现的是一种CAN-DO的关系。

3,以前看过这样的一个例子:一个人,在家被叫为孩子,在车上就是乘客,在学校是学生,而他还是要干活的(对应方法为doWorking()),而在不同的场合他干活的表现是不同的,在家要做家务,在车上就乘车,而在学校要听老师话。体现了一个动作或操作在不同的场合或实例中,做的工作表现的结果是有所不同的。

4,多态提供了对同一个类对象的差异化的处理方式,实现对变化和共性的有效封装和继承,体现了“一个接口,多个方法”的思想,使方法抽象机制成为可能。

5,通过使用abstract-override可以和virtual-override一样地实现多态,包括多层继承也是一样的。不同之处在于,包含虚拟方法的类可以被实例化,而包含抽象方法的类不能被实例化。

6.不能说通过使用new来实现多态,只能说在某些特定的时候碰巧实现了多态的效果。摘自:http://www.cnblogs.com/jhxk/articles/1644018.html