一、接口是什么?
1. 核心定义
接口是 行为的规范/标准/契约,是Java中一种完全抽象的模板。
简单大白话:
• 抽象类:定义「这类事物是什么」(属性+部分行为)
• 接口:定义「这类事物能做什么」(只规范行为,不关心实现)
2. 核心作用
1. 解耦:把「方法声明」和「方法实现」分开
2. 统一规范:所有实现类必须遵守同一套方法标准
3. 突破单继承限制:Java类单继承、多实现
4. 多态核心载体:接口多态是项目开发最常用多态形式
二、接口的语法规则(重点必考)
1. 定义格式
// 定义接口
public interface 接口名 {
// 常量、抽象方法、默认方法、静态方法、私有方法
}
2. 接口命名规范
• 大驼峰:Run、AnimalMove、UserService
• 习惯性后缀:XXXService、XXXDao、XXXHandler(开发规范)
三、接口内部五大成员(JDK版本迭代变化)
1. JDK 7 及之前:只有两种
(1)全局常量
• 默认修饰符:public static final(可省略,系统自动补全)
• 一旦定义,不能修改
public interface MyInterface {
// 等价 public static final int NUM = 10;
int NUM = 10;
}
(2)抽象方法
• 默认修饰符:public abstract(可省略)
• 没有方法体,交给实现类重写
void test();
2. JDK 8 新增(重点实用)
(1)默认方法(带方法体)
• 修饰符:public default(default不能省)
• 作用:接口升级不影响旧实现类,解决接口扩展兼容问题
default void sayHello(){
System.out.println("我是接口默认方法");
}
(2)静态方法
• 修饰符:public static
• 只能通过接口名调用,不能通过实现类、对象调用
static void staticMethod(){
System.out.println("接口静态方法");
}
3. JDK 9 新增
私有方法 private
• 作用:抽取默认方法、静态方法的重复代码,仅供接口内部复用
• 外部无法调用
private void privateMethod(){
// 内部工具方法
}
✅ 总结口诀
• 常量:默认 public static final
• 抽象方法:默认 public abstract
• 默认方法:必须写 default,有方法体
• 静态方法:必须写 static,接口名调用
• 私有方法:JDK9,内部复用
四、接口的实现(核心使用方式)
1. 实现格式
类 实现 接口:implements
public class 类名 implements 接口名{
// 重写接口所有抽象方法
}
2. 实现规则
1. 普通类实现接口:必须重写所有抽象方法
2. 抽象类实现接口:可以不重写抽象方法
3. 重写方法时:权限只能放大不能缩小(必须public)
3. 完整入门案例
1)定义接口
// 行为标准:会跑
public interface Run {
// 抽象方法
void run();
// JDK8默认方法
default void info(){
System.out.println("奔跑接口——默认方法");
}
}
2)实现类
public class Dog implements Run{
// 强制重写抽象方法
@Override
public void run() {
System.out.println("小狗四条腿奔跑");
}
}
3)测试类
public class Test {
public static void main(String[] args) {
Dog dog = new Dog();
dog.run();
dog.info();
}
}
五、接口的多实现(Java核心亮点)
一个类可以同时实现多个接口,突破单继承限制
1. 语法
public class A implements 接口1,接口2,接口3{
// 重写所有接口的所有抽象方法
}
2. 冲突解决
1. 多个接口同名抽象方法:只需重写一次即可
2. 多个接口同名默认方法:必须主动重写,否则编译报错
六、接口与接口:多继承
接口可以 继承多个接口(类只能单继承,接口多继承)
语法
public interface C extends A,B{
// 继承A、B所有常量、抽象方法
}
作用:整合多个接口规范,形成更全面的新标准
七、接口多态(工作最常用)
1. 多态写法
父接口引用指向子类对象
Run r = new Dog();
r.run();
2. 多态优势
• 屏蔽子类细节,统一编程标准
• 便于后期替换子类,低耦合、高扩展
3. 多态弊端 & 解决
• 多态下:只能调用接口中定义的方法,不能调用子类独有方法
• 解决:向下转型
八、接口 和 抽象类 终极区别(面试必问)
对比维度 抽象类(abstract class) 接口(interface)
关系本质 是「继承」—— is-a 是「实现」—— can-do
成员变量 普通变量、常量都可以 只能是全局常量
构造方法 有构造方法 无构造方法
代码块 有静态代码块、普通代码块 无代码块
继承限制 类只能单继承 类可以多实现,接口可多继承
权限修饰 四种权限都可用 基本都是public
使用场景 抽取共性属性、共性行为 统一行为规范、解耦
一句话区分
• 有共性属性、需要模板复用 → 用抽象类
• 只定义行为标准、需要多实现、解耦 → 用接口
九、接口使用场景(开发实战)
1. 项目分层规范:Service、Dao层全部用接口定义标准
2. 统一行为规范:比如 可序列化、可比较、可克隆
3. 解耦设计:面向接口编程,不面向具体类编程
4. 回调机制:监听器、事件监听全部基于接口
5. 多态设计:集合、工具类大量使用接口多态
十、高频易错点总结
1. 接口不能实例化
2. 接口所有常量默认 public static final
3. 抽象方法默认 public abstract
4. 默认方法必须带 default,静态方法只能接口名调用
5. 类多实现时,默认方法冲突必须重写
6. 接口没有构造器,不能创建对象
7. 面向接口编程:变量类型写接口,对象new实现类
十一、核心口诀(背诵版)
接口是标准,规范行为强
常量全静态,抽象无参详
八加默认静,九加私方法
类可多实现,接口多继承
无构无代码,多态解耦王
区别抽象类,只定不存样