Java语言中,除了类和数组之外,还可以定义和使用另外一类引用数据类型——接口(Interface)。
格式:
接口是和类一种相似又有区别的一种结构,接口的设计和调用也是Java程序设计的重要技术。
学习之初,我们可以将接口理解成一种极端的抽象类,
该类中只有常量和抽象方法的定义,而不提供变量和方法的实现。例如:
接口的定义
与类的结构相似,接口也分为接口声明和接口体两部分。定义接口的一般格式如下:
接口的访问限定只有public和缺省的。
interface是声明接口的关键字,与class类似。
并且接口名必须与文件名相同。
对接口体中声明的方法,系统默认为是“public abstract”的,也不需要指定;
对于一些特殊用途的接口,在处理过程中会遇到某些异常,
可以在声明方法时加上“throw 异常列表”,以便捕捉出现在异常列表中的异常。
接口的实现
所谓接口的实现,即是在实现接口的类中重写接口中给出的所有方法,
书写方法体代码,完成方法所规定的功能。定义实现接口类的一般格式如下:
需要提醒的是,可能实现接口的某些类不需要接口中声明的某个方法,
但也必须实现它。类似这种情况,一般以空方法体(即以“{}”括起没有代码的方法体)实现它。
接口的多重继承
和Java类之间的继承关系类似,接口之间也可以进行继承,
也就是说可以定义新的接口继承现有接口,添加新的常量属性和抽象方法定义
,在其父接口的基础上进一步深化或分化其“规划”作用,当然最终还是要靠其实现类实现所有规划的功能。
抽象类和接口的对比
抽象类和接口的对比
如果你拥有一些方法并且想让它们中的一些有默认实现,那么使用抽象类吧。
如果你想实现多重继承,那么你必须使用接口。由于Java不支持多继承,
子类不能够继承多个类,但可以实现多个接口。因此你就可以使用接口来解决它。
如果基本功能在不断改变,那么就需要使用抽象类。如果不断改变基本功能并且使用接口,
那么就需要改变所有实现了该接口的类。