接口
概述
- 接口就是一种公共的规范标准
特点
- 用interface关键字修饰
- 实现接口用implements
- 接口不能实例化
- 接口的子类要么重写左右抽象方法
- 要么子类也是抽象类
成员特点
- 成员变量
- 只能是常量
- 默认修饰符:public static final
- 构造方法
- 没有构造方法
- 成员方法
- 只能是抽象方法
- 默认修饰符:public abstract
和类的关系
- 类与类
- 继承关系,只能单继承,可以多层继承
- 类与接口
- 实现关系,可以单实现,多实现,可以继承的同时实现接口
- 接口与接口
- 继承关系,可以单继承,可以多继承
默认方法 default(jdk8加入)
- 默认方法不必须重写,重写时把default去掉
- public可以省略,default不可以省略
- 如果实现多个接口,多个接口中存在相同的方法声明,子类就必须对方法进行重写
静态方法 static(jdk8加入)
- 只能通过接口名调用
私有方法(jdk9加入)
- 当默认方法和静态方法中有相同的代码时,用私有方法提取出来,并隐藏起来
多态
概念
- 同一个对象,在不同时刻表现出来的不同形态
前提
- 要有继承和实现关系
- 要有方法的重写
- 要有父类引用指向子类对象
成员访问特点
- 成员变量
- 编译看父类,运行看父类
- 成员方法
- 编译看父类,运行看子类
好处
- 提高程序的扩展性。定义方法时候,使用父类型作为参数,在使用的时候,使用具体的子类型参与操作
弊端
- 不能使用子类特有的成员
多态中的转型
- 向上转型
- Fu f = new Zi()
- 向下转型
- Fu fu = new Fu()
- Zi zi = (Zi)fu
- 风险
- 在转换的时候会出现ClassCastException
- instanceof
- 用来判断传入的值的类型