一、什么是接口(interface)
1. 核心定义
- 关键字:interface
- 接口是「纯粹的规则/标准」,只定义功能,不做具体实现。
- 类比:接口是说明书,类是真正造出来的产品。
2. 接口的最大特点
1. 接口多继承:一个接口可以同时继承多个接口
2. 类多实现:一个类可以同时实现多个接口
3. 接口中:- 变量默认: public static final (常量,不能改)
- JDK8开始:可以有抽象方法、默认方法、静态方法
- JDK9开始:可以有私有方法
重点:接口不一定有抽象方法(空接口也合法)
二、接口的 5 个必考规则
规则1:接口不强制有抽象方法
Java8/9新增各种非抽象方法,接口可以没有抽象方法。
→ 考题:「接口中必须定义抽象方法」❌ 错
规则2:抽象类可以实现接口
抽象类实现接口时,可以不重写全部方法,剩下的交给它的子类实现。
→ 考题:「接口的实现类可以定义为抽象类」✅ 对
规则3:接口多继承、类多实现
- 接口 extends 多个父接口
- 类 implements 多个接口
→ 考题:「接口之间多继承、类对接口多实现」✅ 对
规则4:接口属性是常量,抽象类属性可修改
- 接口所有变量默认被 final 修饰 不可修改
- 抽象类普通变量可以随意修改
→ 考题:「接口属性不可改,抽象类属性可以改」✅ 对
规则5:不是所有接口都能用Lambda
Lambda 只支持 函数式接口(只有1个抽象方法的接口)
有 ≥2 个抽象方法的接口,不能用Lambda
→ 考题:「所有接口都可以用Lambda实现」❌ 错
三、接口基础代码示例
1. 定义接口
public interface USB {
// 常量(默认 public static final)
String NAME = "USB设备";
// 抽象方法(无实现)
void work();
// JDK8 默认方法(有实现)
default void show() {
System.out.println("这是默认方法");
}
}
2. 类实现接口
public class Mouse implements USB{
@Override
public void work() {
System.out.println("鼠标工作");
}
}
3. 多实现(重点考点)
// 一个类实现多个接口
public class Phone implements USB, Bluetooth{
}
4. 接口多继承
// 一个接口继承多个接口
public interface A extends B,C{
}
四、内部类
1. 什么是内部类
定义在类里面的类,叫内部类。
2. 考试必考三种内部类
1. 局部内部类(方法内部类)- 定义在方法里面
- 作用范围只在当前方法
2. 匿名内部类- 没有类名
- 可以继承普通类 / 抽象类 / 实现接口
考题:「匿名内部类既可以基于接口,也可以基于父类」✅ 对
3. 成员内部类、静态内部类
五、匿名内部类最简示例
不用单独写一个实现类,直接new接口并重写方法:
USB u = new USB() {
@Override
public void work() {
System.out.println("匿名内部类实现接口");
}
};
六、所有填空考点终极总结(直接背)
1. 定义接口关键字:interface
2. 接口与接口之间:多继承
3. 类与接口之间:多实现
4. 定义在方法里的内部类:局部内部类(方法内部类)
5. Lambda只能用在:函数式接口(单个抽象方法)
七、新手终极记忆口诀
- 接口是标准,多继承、多实现
- 接口变量全是常量
- 接口方法8有默认、9有私有
- 抽象类实现接口可不全重写
- Lambda 只能单抽象方法
- 匿名内部类 接口、父类都能用