一、接口 vs 抽象类(高频考点)
| 对比点 | 接口(interface) | 抽象类(abstract class) |
|---|---|---|
| 方法 | 默认 public abstract | 可以有普通方法 |
| 变量 | public static final(常量) | 普通成员变量 |
| 构造方法 | 没有 | 有 |
| 多继承 | 可以实现多个接口 | 只能继承一个类 |
| 关键字 | implements | extends |
一句话记忆:
- 接口:规范(全是规则)
- 抽象类:半成品类(可以有实现)
二、接口实现规则(必考)
实现接口:
class A implements B {
public 返回类型 方法名() {}
}
必须满足:
- 方法必须是 public
- 返回类型必须一致
- 必须实现全部方法(除非类是 abstract)
三、方法重写(Override)规则(高频)
| 项目 | 要求 |
|---|---|
| 方法名 | 必须相同 |
| 参数 | 必须相同 |
| 返回值 | 相同或子类 |
| 权限 | 不能变小(可变大) |
典型错误:
// 错(权限变小)
int f() {}
// 对
public int f() {}
四、多态(核心)
定义:
父类引用指向子类对象
Father f = new Son();
核心规则:
- 能调用什么方法 → 看左边(父类)
f.method(); // 必须是 Father 中定义的
- 实际执行谁 → 看右边(子类)
如果子类重写了方法,则执行子类版本
总结:
编译看左边,运行看右边
接口多态
Interface i = new Impl();
规则相同:
- 只能调用接口中定义的方法
- 执行实现类的方法
五、哪些属于多态(选择题)
| 项目 | 是否多态 |
|---|---|
| 方法重载(overload) | 是 |
| 方法重写(override) | 是 |
| 父类引用指向子类对象 | 是 |
| 接口引用指向实现类对象 | 是 |
| 类中数据操作 | 否 |
| 继承本身 | 否 |
六、接口中的常见错误
错误写法:
public abstract static void cry(); // 错
原因:
- abstract:没有方法体
- static:必须有方法体
两者冲突,不能同时使用
七、最容易出错的点
错误1:抽象类的方法必须是抽象方法 → 错,可以有普通方法
错误2:父类引用可以调用子类所有方法 → 错,只能调用父类中声明的方法
错误3:接口方法可以随意定义 → 错,必须 public 且返回值一致
最终记忆要点
接口:
- 方法默认 public abstract
- 变量是常量(public static final)
实现接口:
- 方法必须 public
- 必须全部实现
多态:
- 看左边决定能不能调用
- 看右边决定执行结果
重写:
- 方法名相同
- 参数相同
- 权限不能降低


评论区
评论加载中...