接口(interface):是一种抽象类型,是对一个类的一组需求的描述。要求是指,比如要使用Arrays类的sort方法对Employee对象数组进行排序,那么Employee类必须实现Comparable接口。//语法[Visibility]interface接口名称[extendsotherinterfacenames]{//声明变量//抽象方法}//Comparable接口的代码:publicinterfaceComparable{intcompareTo(Tother);}callx.compareTo(y),当xy时,返回正数;否则返回0。接口特性一个类可以实现多个接口;接口没有构造函数;接口中没有实现的方法,都是抽象方法,方法会被隐式指定为publicabstract;接口中的所有方法都是自动公开的,因此在接口中声明方法时不必提供关键字public,但在实现接口时必须提供public;接口中可以定义成员变量,这些成员变量默认是publicstaticfinalstatic常量;实现接口的类必须实现接口中的所有方法,否则必须声明为抽象的。注意:如果抽象类实现了接口,则不需要实现接口中的所有方法!(抽象类允许抽象方法的存在)如何实现一个接口?为了让一个类实现一个接口,有两个步骤:声明该类实现了给定的接口。(使用关键字:implements)实现接口中的所有方法。classEmployeeimplementsComparable{publicintcompareTo(Employeeother){returnDouble.compare(salary,other.salary);}}注:在JDK1.8之后,接口允许静态方法和默认方法,即允许存在具体的实现方法;JDK1.9之后,允许将方法定义为private,允许私有接口方法的存在,这样一些复用的代码就不会暴露方法;为什么要添加此功能?因为在JDK1.8之前,接口中的方法都是抽象方法。当我们需要修改接口时,我们不得不修改所有实现该接口的类。这显然是不合适的,所以解决方法是在接口中添加新的方法,但是这样一来,这个方法的实现也必须添加到类中,所以引入默认方法和静态方法解决了两者之间不兼容的问题接口修改和现有实现。publicinterfaceTest{//1.默认方法,修改为默认。默认方法只能通过接口实现类的对象调用defaultStringfun1(Strings){returns;}//2.静态方法,用static修饰。静态方法只能通过接口名调用staticvoidfun2(){System.out.println("xxx");}}如果一个类实现了多个接口,同名的默认方法如何解决冲突?publicinterfaceVehicle{defaultvoidprint(){System.out.println("我是一辆车!");}}publicinterfaceFourWheeler{defaultvoidprint(){System.out.println("我是四轮惠勒!");}}第一个解决方案是创建自己的默认方法来覆盖被覆盖接口的默认方法:!”);}}方案二可以使用super调用指定接口的默认方法:publicclassCarimplementsVehicle,FourWheeler{publicvoidprint(){Vehicle.super.print();}}抽象类和接口有什么区别?实现:抽象类和接口在Java中都是抽象类型。抽象类是通过继承来实现的。一个类只能有一个继承关系,但是一个类可以实现多个接口。方法:抽象类允许实现方法,而接口只能有未实现的方法,即抽象方法;成员变量:抽象类的成员变量可以是多种类型,接口中的成员变量只能是publicstaticfinal类型的静态常量;实现概念:抽象类和接口的实现概念不同,抽象类代表is-a关系,接口代表has-a关系;参考资料:Java接口|菜鸟教程《Java核心技术第1卷基础知识原著第9版》