首先,关于Java言语来说,接口(interface)占据着非常重要的方位,假如没有接口,Java言语不管从功用性上,仍是扩展性上,都会大打折扣。
从技能体系结构上来看,Java言语借助于接口,能够完结三部分功用,其一是接口界说了Java言语傍边的“全抽象”概念。借助于接口的全抽象概念,Java能够完结界说和完结的别离,这样能够更有利于Java言语提出的“按角色开发”的相关概念,然后能够让Java言语能够适配更多的技能体系(容器),这关于Java言语的敏捷遍及具有非常重要的含义。
其二是接口为Java赋予了较强的扩展性,而借助于接口的扩展性,Java言语能够在不同时期找到自己的方位,然后完结持续发展。比方在Web开发、移动互联网开发和大数据开发时代,Java言语都能够得到许多的运用,这其间接口起到了非常要害的效果。
其三是接口为Java的模块化奠定了根底,这一点在JDK9之后,得到了较为完全的体现。实际上,Java言语的模块化问题一向困扰着许多程序员,Java言语自身一向没有为模块化供给根底支撑,这也促进了OSGI等模块化框架得到了广泛的运用,但是到JDK9之后,Java言语供给了模块化支撑,这使得Java言语的动态扩展性能得到了根底性地支撑。
Java中的接口和承继并不是解决相同的问题,实际上,Java言语傍边的承继在许多场景下并不建议运用,原因是承继本身属于“强耦合”的概念,强耦合本身有非常多的坏处,为程序的复用和保护也带来了一定的困难。当然,承继作为面向对象言语的三大特征之一,假如合理地运用,也会带来许多方便,也会更全面地描述各种模型。
虽然在许多场景下,运用接口要更好一些,但是接口的界说并不是为了替代承继,二者之间的定位也有非常明晰的界定。能够说,承继供给了“高内聚”的解决方案,而接口则供给了松耦合的解决方案,而这也正是合理运用承继和接口的起点。
从Java言语的发展趋势来看,接口为Java言语带来了非常大的想象空间,比方当前的“微服务”概念,从根底完结方法来看,也能够看成是根据接口完结的一种新模式,这种模式的特色便是能够完结可扩展的动态服务。
提到微服务就一定要提到云核算,实际上,当前的微服务能够看成是云核算时代的一种新的代码完结方法,假如把云核算看成是一个服务的“容器”,那么微服务更像是运行在云核算这个大容器傍边的小容器。在Java的微服务解决方案傍边,接口起到的便是一种“链接”的效果,一边是供给服务的容器,另一边则是事务的抽象,这中间还能够完结各种第三方服务的介入,这样既能够保障服务的独立性,同时也供给了更加高效的运行方法。
最终,关于Java程序员来说,学习承继和学习接口并不矛盾,接口傍边也有承继的概念,比方接口之间的扩展就能够经过承继的概念来完结,比方在Java分布式开发傍边就有比较直观的体现,不管是早期的RMI解决方案,仍是现在根据框架的解决方案,接口之间都能够经过extends来完结扩展。