Java 面向对象笔记:接口、抽象类、多态与重写 | 敖苛记
整理了 Java 面向对象的一些考点,包括接口与抽象类的区别、接口实现规则、方法重写、多态机制等。
public abstract可以有普通方法变量public static final(常量)普通成员变量构造方法没有有多继承可以实现多个接口只能继承一个类关键字implementsextends一句话记忆:
- 接口:规范(全是规则)
- 抽象类:半成品类(可以有实现)
实现接口:
class A implements B {
public 返回类型 方法名() {}
}
必须满足:
- 方法必须是 public
- 返回类型必须一致
- 必须实现全部方法(除非类是 abstract)
典型错误:
// 错(权限变小)
int f() {}
// 对
public int f() {}
定义:
父类引用指向子类对象
Father f = new Son();
核心规则:
- 能调用什么方法 → 看左边(父类)
f.method(); // 必须是 Father 中定义的
- 实际执行谁 → 看右边(子类)
如果子类重写了方法,则执行子类版本
总结:
编译看左边,运行看右边
Interface i = new Impl();
规则相同:
- 只能调用接口中定义的方法
- 执行实现类的方法
错误写法:
public abstract static void cry(); // 错
原因:
- abstract:没有方法体
- static:必须有方法体
两者冲突,不能同时使用
错误1:抽象类的方法必须是抽象方法 → 错,可以有普通方法
错误2:父类引用可以调用子类所有方法 → 错,只能调用父类中声明的方法
错误3:接口方法可以随意定义 → 错,必须 public 且返回值一致
接口:
- 方法默认 public abstract
- 变量是常量(public static final)
实现接口:
- 方法必须 public
- 必须全部实现
多态:
- 看左边决定能不能调用
- 看右边决定执行结果
重写:
- 方法名相同
- 参数相同
- 权限不能降低