接口的好处
以前对接口和抽象类,总是模糊,不知道什么时候用接口,什么时候用抽象类。通过查阅一些资料,加上一些自己的理解,现在整理如下:
接口和抽象类有很大的相似性,甚至可以相互替换,因此很多开发者在进行开发时对于接口和抽象类的选择显得比较随意。其实,他们是有区别的。
对于接口的作用,在一些小的项目上,很难看出其发挥的优势。这就使一些经常的做小项目的开发人员,做时间久了就感觉不到它有什么好的,有时候写起来还麻烦,干脆不用了。其实,在一些大项目上,接口的作用是发挥地相当的明显的。
比如:如果你开发业务逻辑代码,当你好不容易的实现了它全部的功能,突然用户需求要改,你在修改你代码的同时,调用你代码的其它人也会改,如果代码关联性
强的话,会有很多人都要改动代码,这样一来二去,程序会变得相当的不稳定,而且可能还会出现更多的新Bug,所有人都可能会陷入混乱。
但如果使用接口的话,在你使用它之前,就要想好它要实现的全部功能(接口实际上就是将功能的封装)。确定下这个接口后,如果用户需求变了,你只要重新写它
的实现类,而其它人只会调用你的接口,他不管你是怎么实现的,它只需要接口提供的功能。这样,很可能只需要把你的代码修改就可以了,其他人什么都不用做。
同时:这样做的话,使得开发人员能够分工明确,只要确定下来接口了,就可以同时进行开发,提高开发效率。另外,使用接口还有使用方便,可读性强,结构清晰
等优点。
当然,我说的这些也可能是浅层面的,在其他方面还有很多的好处。
抽象类:可以有抽象方法,也可以有方法的实现。抽象类不一定有抽象方法,而有抽象方法的类一定是抽象类。抽象类不能实例化。
接口:
只有方法体的声明,没有方法实现。一个类可以实现多个接口,但只能继承一个抽象类。在项目上,我们一般的做法是:最上层为接口,中间层次为抽象类,往下就
是我们的实现类。为什么我们会在中间加上抽象类呢,就是为了提高代码的可重用性,你可以在抽象类里提炼出一些公用的已经实现的方法,那么底下那些实现类只
要继承它也就继承了这些方法。