浅谈JAVA接口

浅谈JAVA接口

        在学习面向对象语言JAVA的过程中,接口和抽象类是两个必定要接触的强大机制,而正式这两种机制的存在,赋予了JAVA面向对象的特性。和众多初学者一样,在学习接口的过程中,我产生了诸多疑问。经过一段时间的学习并查阅了相关资料,解决了很多问题,在此与君分享。

        1.接口是什么?

        2.为什么有了抽象类还要有接口,两者有什么区别?

        3.接口中只是定义了相关方法,在类中需要重新实现,为什么不直接在类中实现呢,这样代码量不是更少吗?

1、接口是什么?

        ①接口是对类一组需求的描述,如果类遵从了某个接口,那么就履行这项服务。        

        ②接口是一种规范,实现了某个接口意味着具有接口的功能。

2、为什么有了抽象类还要有接口,两者有什么区别?        

①interface强调特定功能的实现(is-a),而abstract class强调所属关系(like-a)

②抽象类中可以存在已经实现的方法,而接口在JAVA SE8之前不能实现方法。

 抽象类只能被单继承,而一个类可以实现多个接口

③接口会出现,最关键的原因应该是Java中向上转型的出现,因为向上转型,子类中一些父类中不存在的方便不能继续调用了。此时不可以在父类中添加子类特有的方法,于是出现了接口。

3、接口中只是定义了相关方法,在类中需要重新实现,为什么不直接在类中实现呢,这样代码量不是更少吗?        

①JAVA是一种强类型语言,在通过对象调用方法时,编译器会首先检查该方法是否存在。如果类实现了某个接口,那么该类中必定有接口中的所有方法。例如:如果类实现了Comparable接口,那么该类必定有CompareTo方法,于是便可以进行比较。

②如果有很多地方用到类似的功能,这个功能便可以抽象为接口,接口中的方法名唯一,这样就确立了一个统一的标准,于是大家都知道这个接口是做什么的,避免了随意命名导致看不懂的情况。

③接口做到定义和实现相分离。这与C++中的桥接模式有异曲同工之处,用户在进行操作时,只能看到我们提供的接口,也就是只能看到有哪些方法,而看不到具体的实现过程,所以安全性更高,它是实现低耦合的重要手段。

④方便维护和修改。如果将某功能在类中定义,那么在更换功能或修改功能时,就要打开这个类重新修改。然而接口就方便很多,只需要一个接口对象,用到哪个具体功能就直接引用实现该接口的类。比如说在数据库的链接中,我提供了一个接口,不同的数据库厂商实现我提供的接口,这样我想要连接哪个数据库,就通过接口引用该厂商实现该接口的类,在这里,接口便体现了多态,一个调用多种实现,多态是实现设计模式的重要手段。

看了这么多理论之后,在今后的学习中你将会对JAVA有更深入的了解,对这些理论知识有进一步的思考。

如有错误还望指正,若有更好的理解,还望分享,与君共勉!



猜你喜欢

转载自blog.csdn.net/qq_40298054/article/details/80138838