接口
1、接口概念
是一种标准和规范,是制约接口的使用者和接口的实现者双方的一种约定。
2、语法
(1)关键字interface
语法:interface 接口名{
//常量
//抽象方法
}
(2)接口不能创建对象
(3)接口中没有构造方法
(4)接口中的属性都是公开静态常量(默认被public static final修饰)
(5)接口中的所有方法都是公开的抽象方法
(默认被public abstract 修饰)
【注】:接口中方法默认访问权限是public 普通类默认为缺省default
3、接口的实现类
(1)语法
class 类名 implements 接口名{ }
(2)实现类的要求
- 如果接口的实现类不想成为抽象类,必须覆盖接口中全部的方法。
- 实现类中覆盖接口的权限必须是public,因为接口的访问权限为public。
(3)使用:
父类型的引用指向子类的对象——多态的使用。
接口名 引用 = new 实现类名();
4、接口的继承性
(1)接口与接口之间是多继承
一个接口可以同时继承多个接口
interface 接口名 extends 父接口1,父接口2{ }
(2)接口与类之间是多实现
一个类可以同时实现多个接口
class 类名 implements 接口名1,接口名2{ }
注意:如果实现类不想成为抽象类,必须覆盖所有接口中的所有方法。
(3)一个类实现多个接口的同时,可以继承一个父类
class 类名 extends 父类名 implements 接口名{ }
注意:必须是 继承在前 实现在后。只能继承一个父类,可以实现多个接口。
5、接口的影响
(1)接口之间的多继承和接口与类之间的多实现的关系,让多态更加复杂和多样化。
(2)接口在Java中起到制定标准和规范的作用,用于制约接口的使用者和接口的实现者。
(3)在实际开发中,利用接口将接口的使用者和接口的实现者进行分离,从而降低程序的耦合度,实现程序的弱耦合。(利用多态技术)
6、高版本对接口的补充
1、JDK8.0版本对接口的提升
默认方法
(1) 默认方法,可以带有方法的实现部分,方法访问权限也是public。
(2) 默认方法允许方法覆盖。
(3) 该方法可以用于提取公共方法,降低代码的冗余性。
interface IAA{
public default void m1(){
//方法实现部分
}
}
静态方法
(1) 静态方法也可以有方法的实现部分。
(2) 静态方法的访问权限也是public。
(3) 使用时:接口名.静态方法(实参);
public static 返回值类型 方法名(形参){
方法的实现部分
}
public class Test5 {
public static void main(String[] args) {
Ik.m1();
}
}
interface Ik{
public static void m1(){
System.out.println("静态方法");
}
}
2、JDK9.0版本
私有方法
(1) 接口中可以定义私有方法
(2) 私有方法通常共给接口中的default方法使用,作为接口内部组件,进一步减少冗余。
private 返回值类型 方法名(形参列表){
//方法实现部分
}
7、接口分类【了解】
(1) 常量接口:接口中只有属性,没有方法。
interface IA{
public static final int a = 9;
}
(2) 标记接口:空接口,接口中没有定义任何内容。
interface IB{}
(3) 函数式接口:接口中有且只有一个抽象方法
interface IC{
void m1();
}注意:函数式接口会应用在Lambda表达式中
(4) 普通接口:接口中至少有一个抽象方法。
【面试重点】接口和抽象类的区别