上一篇文章,通过一张概括性导图,总结性的讲解了一下我对面向对象的理解,以及重写与重载的区别。
这篇文章的主要内容是写,我对面向对象功能:接口、泛型和委托的理解。。很多人都认为,我不使用它们,照样能实现程序想要的功能,为什么还要用它们?可以这么说,如果要想混IT行业,那么,我们就要成为专业人员。那么,我们所写的代码就不仅仅是实现其功能那么简单了,我们还要提高程序的性能,更重要的是,我们所写的代码是给别人看的,要让别人看得懂,实现团队合作。。接口、泛型和委托让我们的代码更结构化、专业化。。
接口
接口定义
譬如定义了一个汽车的接口,有轮子,有零件的定义,如果要实现写一个奔驰的类,实现这个接口,就必须实现轮子和零件的定义。再写一个奥迪的类,再继承这个接口,那么也必须实现轮子和零件的定义。
如果不用接口,那么我编写了奔驰类,可能只有实现了轮子的方法,但忘记了编写零件的方法,那么就不能生产出奔驰。
接口好处
不同的程序员编写代码,就有可能出现方法名称不同问题,那么别人调用的时候就会很麻烦。
比如很多人共同开发一个产品,大家分工协作。但是彼此的程序怎么才能很好的衔接起来了呢?比如你使用我编写的一个函数,但是事先你不知道我是怎么编写的,你是没有办法在你的程序中嵌入我的代码。
但是如果大家都是用接口,你就可以在你的代码中使用借口定义好的函数,而在实际运行的时候,你在调用我编写的函数,因为他们的名称,参数,返回值都一样,所以运行起来没有问题。开发效率大大提升了。
总的来说,我认为接口就是起一个规范作用,让程序流程更加清晰,它能降低耦合,提高扩展性,使开发效率大大提升,而且,非常适合开发大型项目。
泛型
要理解泛型,就必须了解它的前身——集合类(如:ArrayList集合)。集合类是可以代替数组以便灵活管理对象组。注意这里的用词,集合类是个数组(样的东西),集合类用来存储对象。
集合好处:1、根据使用大小,按需动态增加
2、可随意添加、插入或移除某一范围的元素
缺点:集合类型不安全,不管是什么类型的对象都能接受。
尤其是ArrayList对于存放值类型的数据,比如int、string等。用ArrayList就意味着都需要将值类型装箱为Object对象,当使用时,还需要执行拆箱操作,这就带来了很大的性能损耗
为避免集合的缺点,在Net2.0中引入了泛型。泛型就是定义了返回类型的集合类,毋庸置疑,泛型还是个集合,不过它是个确定了存储对象类型的集合。这样,就绕过了装箱拆箱动作,也不会产生拆箱错误。
可以这样认为,集合类是泛型的基类部分,泛型新引入的部分是对集合基类的多态扩展。
总的来说,泛型使程序在性能上得到提升。。
委托
我们可以这样理解,委托是方法的指针,可以把方法当参数用。适合用在某时或某种情况执行某些事,而这些事你事先并不知道是啥。
用现实生活中的示例做比喻:一个律师能替人打官司,他可以打任何类型的官司,但只有原告委托律师打官司时律师才知道自己要打什么类型的官司,所以律师就是一个委托。
什么时候使用
1、相当于用方法作为另一方法参数(类似于C的函数指针)
2、在两个不能直接调用的方法中作为桥梁
3、当不知道方法具体实现什么时使用委托,如:事件中使用委托
小结
对于面向对象的总结,先暂时告一段落,以后边学边归纳。接下来我就要开始学习设计模式了,希望我能一如既往的坚持,一如既往的热情。。下一篇文章《【设计模式】概括》