抽象类是从多个类中抽象出来的模板,如果将这种抽象进行得更加彻底,则可以提炼出一种更加特殊的"抽象类"-接口(interface),Java9对接口进行了改进,允许在接口中定义默认方法和类方法,默认方法和类方法都可以提供方法实现,Java9为接口增加了一种私有方法,私有方法也可提供方法实现
接口是从多个相似类中抽象出来的规范,接口不提供任何实现,接口体现的是规范和实现分离的设计哲学.
接口定义的是多个类共同的公共行为规范,这些行为是与外部交流的通道,这就意味着接口里通常是定义一组公用方法.
接口的基本语法,使用关键字interface
[修饰符] interface 接口名 extends 父接口1,父接口2,...
{
零个到多个常量定义...
零个到多个抽象方法...
零个到多个内部类,接口,枚举...
零个到多个私有方法,默认方法或者类方法定义...
}
语法详细定义:
1.修饰符可以是public或者省略,如果省略了public访问控制符,则默认采用包权限访问控制符,也就是只有在相同包结构下才可以访问该接口
2.接口名应与类名采用相同的命名规则,即如果仅从语法角度看,接口名只要符合标识符规则即可;如果从Java可读性来说,则接口名应由多个有意义的单词连缀而成,单词首字母大写.
3.一个接口可以有多个直接父接口,但接口只能继承接口,不能继承类.
只有在Java8及以上版本中才允许在接口中定义默认方法,类方法,关于内部类,内部接口,内部枚举,稍后介绍.
接口定义的是一种规范,因此,接口里面不能包含构造器和初始化块.
接口内部的成员:
1.成员变量(只能是静态常量,默认使用修饰符 public static final修饰,没有构造器和初始化块,故接口中定义的成员变量只能在定义时指定默认值)
2.方法(只能是抽象方法,类方法,默认