Java接口是一系列方法的声明,是一些方法特征的集合,一个接口只有方法的特征没有方法的实现,那java接口怎么理解?下面来我们就来给大家讲解一下java接口相关知识。
1、 接口是一种特殊的抽象类,包含方法和属性(成员变量),其中方法都是抽象方法,即只有方法名没有方法体的形式。所有成员变量都是常量没有变量。
2、接口存在的意义:
接口的存在是根据外部的功能而存在的。他包含很多抽象方法,这些抽象方法需要实现,那么就需要实现类,实现类必须实现这些方法,当然也可以有自己的方法。但是接口中的方法一个不能少。因此接口就很大程度上限制了实现类的方法或功能。另外接口下面可以有好几个这种类,并且这些实现类功能上可以相同,这就实现了不相关类的相同行为。
3、接口所运用的思想:接口的思想是封装,外部调用只能通过接口调用,并不知道实现类是如何实现的,这就起到了封装作用。
4、接口带来的好处:只要接口不变那么他的实现类想怎么变都行,这样的话就提高了系统的可扩展性和可维护性。即“接口是系统可插拔性的保证”。
5、接口和抽象类:1优先选用接口,2在既定义了子类的行为,又要为子类提供公共的功能时应选择抽象类。
6、接口和继承:一个类可以实现多个接口,但继承只能允许一个类,即单继承。2类的继承有安全隐患,接口没有。
请记住:一切事物均有功能,即一切事物均有接口。
类与接口的关系为实现关系,即类实现接口。实现的动作类似继承,只是关键字不同,实现使用implements。
其他类(实现类)实现接口后,就相当于声明:”我应该具备这个接口中的功能”。实现类仍然需要重写方法以实现具体的功能。
格式:
class 类 implements 接口 { 重写接口中方法 }
在类实现接口后,该类就会将接口中的抽象方法继承过来,此时该类需要重写该抽象方法,完成具体的逻辑。
1)接口中定义功能,当需要具有该功能时,可以让类实现该接口,只声明了应该具备该方法,是功能的声明。
2)在具体实现类中重写方法,实现功能,是方法的具体实现。
于是,通过以上两个动作将功能的声明与实现便分开了。(此时请重新思考:类是现实事物的描述,接口是功能的集合。)
举例;
比如一台电脑,主板上的PCI插槽就可以理解为现实中的接口
你可你把声卡,显卡,网卡都插在PCI插槽上,而不用担心那个插槽是专门插哪个的
原因是做主板的厂家和做各种卡的厂家都遵守了统一的规定 包括尺寸,排线等等
但是各种卡的内部实现结构是不一样的.
通过生活中例子模拟java面向接口编程实例
package com.test; /** * 定义PCI接口,定义主板PCI插槽规范 * @author yanerkang * */ public interface PCI { void start(); void stop(); } package com.test; /** * 网卡实现PCI接口规范 * @author yanerkang * */ public class NetworkCard implements PCI { public void start() { System.out.println("Send..."); } public void stop() { System.out.println("Network stop!"); } } package com.test; /** * 显卡实现PCI接口规范 * @author yanerkang * */ public class GraphicCard implements PCI { public void start() { System.out.println("Display Graphic..."); } public void stop() { System.out.println("Display Graphic stop!"); } } package com.test; /** * 声卡实现PCI接口规范 * @author yanerkang * */ public class SoundCard implements PCI { public void start() { System.out.println("Du du..."); } public void stop() { System.out.println("Sound stop!"); } } package com.test; /** * 主板类 * @author yanerkang * */ public class MainBoard { /** * 通过这个方法,主板上可以插入任何实现PCI接口规范的卡 * * @param pci 参数类型为接口,任何实现接口的类都可以传进来. */ public void usePCICard(PCI pci) { pci.start(); pci.stop(); } } package com.test; public class Assembler { /** * @param args */ public static void main(String[] args) { MainBoard mb = new MainBoard(); //在主板上插入网卡 PCI nc = new NetworkCard(); mb.usePCICard(nc); //在主板上插入声卡 PCI sc = new SoundCard(); mb.usePCICard(sc); //在主板上插入显卡 PCI gc = new GraphicCard(); mb.usePCICard(gc); } }
输出:
Send... Network stop! Du du... Sound stop! Display Graphic... Display Graphic stop!
Java接口提高了系统的可扩展性和可维护性,并且很大程度上限制了实现类的方法或功能,所以java接口在一个程序中还是很重要的。最后大家如果想要了解更多java常见问答知识,敬请关注奇Q工具网。
推荐阅读: