包
抽象类
抽象类介绍
- 什么是抽象方法 ? 什么是抽象类 ?
- 抽象方法 : 将共性的行为(方法), 抽取到父类之后, 发现该行为在父类中无法给出具体明确, 这种方法就应该设计为抽象方法.
抽象类 : 抽象类就是一个特殊的父类, 特殊的点, 在于内部可以定义抽象方法.
- 如何定义抽象方法和抽象类 ?
- 抽象方法 : public abstract void 方法名 ();
抽象类 : public abstract class 类名 {}
抽象类的注意事项
abstract 的冲突问题
接口
接口介绍 :
- 接口体现的是对规则的声明
- 什么时候定义接口 ?
- 如果你发现一个类中所有的方法,都是抽象方法,那么这个类的唯一价值,就是在声明规则
- 对于这种类,通常会改写为 Java 中的接口
接口定义格式 \ 实现格式 :
- 定义格式 :
- public interface 接口名 {}
- 实现格式 :
- public class 类名 implements 接口名 {}
- 接口的实现类(子类) :
- 重写所有抽象方法
- 将实现类变成抽象类 (不推荐)
接口中的成员特点 :
- 成员变量
- 只能是常量, 因为默认被 public static final
细节: 这三个关键字没有顺序关系
- 成员方法
- 只能是抽象方法, 因为默认被 public abstract 修饰
- 构造方法
- 没有
接口和类之间的各种关系 :
- 类和类的关系
- 继承关系, 只支持单继承, 不支持多继承, 但是可以多层继承
- 类和接口的关系
- 实现关系, 可以单实现, 也可以多实现, 甚至可以继承一个类的同时, 实现多个接口
- 接口和接口的关系
- 继承关系, 可以单继承, 也可以多继承
抽象类和接口的对比 :
多态
多态介绍 :
多态的成员访问特点 :
多态的好处和弊端 :
问题: 非要调用怎么办 ?
- 建议直接创建子类对象去
- 向下转型
多态中的转型问题 :
- 向上转型
- 从子到父
Fu f = new Zi();
- 向下转型
- 从父到子
Zi z = (Zi)f;
多态转型的安全隐患 :
ClassCastException (类型转换异常):
如果被转的引用类型变量,对应的实际类型和目标类型不是同一种类型,那么在转换的时候就会出现ClassCastException
必掌握案例 :
- 猫狗案例
- 支付接口
- 订单业务