C# 继承、接口与多态
我在这里想谈一谈在C#中的继承(继承于基类或接口)和多态(如方法的覆写)。继承和多态是面向对象编程中两个重要的特性,这种特性和编程语言本身是没多大关系的,因此我先会用非编程的思维来谈一谈我对它们的认识,然后再谈一谈它们在C#中的实现方法。
1、继承的含义
所谓继承,就是“站在巨人的肩膀上”进行扩展。例如,最开始的铅笔尾端是没有橡皮擦的,后来有个男孩在尾端装上了橡皮擦,铅笔的销量一路飙升,他也成了百万富翁,这说明好的灵感多么的重要!(偏题了啊喂!感兴趣的童鞋请戳:http://baike.baidu.com/view/1628703.htm)好吧,回归正题,这就是一个典型的继承。我们在做一个“橡皮头铅笔”时,不需要想如何做一支铅笔,而是拿来一支现成的铅笔,在它上面装上橡皮而已。继承可以帮助我们重用组件,继承是人类不断进步的源泉(貌似又偏题了!)。
2、多态的含义
从非编程的角度来看“多态”,可以理解成“不同的人执行相同的条例,却有不同的行为”。在编程的角度来看,是“不同的对象执行相同的方法,却有不同的行为”。怎么来理解呢,我可以打以下这个比方。
某学校的学生规范中有写道:“老师进教室时,学生坐好如下课前准备:安静坐好。此时值日生应该上讲台擦黑板,课代表收本科目作业。”教室里,除了老师外,其他的人都是学生(包括课代表和值日生),在执行这些行为的时候,课代表和值日生为什么不和规范中所提到的“学生”一样安静坐好呢?因为规范中还说到,他们有自己的职责:一个应当擦黑板,一个应当收作业。这就是多态,虽然学生们都要做好课前准备,但是却不全部相同。由“学生”派生出来的“课代表”要收作业,由“学生”派生出来的值日生要擦黑板,而“学生”这个“基类”的各个同学只需要安静坐好。他们都执行着相同的条例(做课前准备),却有不同的行为。
3、接口的含义
通俗地来打比方,我要开发一个多功能插线板,其中的插头孔要支持大陆标准、香港标准、英国标准和美国标准。我只需要把插线板