02,接口 定义的格式
引用类型:
数组[ ]
类
接口: 没有构造方法
1,只有抽象方法(JDK7) abstract
2,默认方法(JDK8) default
3,静态方法(JDK8) static
4,私有方法(JDK9) private
接口:
是方法的集合,如果说类的内部封装了成员变量,构造方法和成员方法,那么接口的内部主要就是封装了方法
接口的使用:
不能创建对象,但是可以被实现,一个实现接口的类需要实现接口中所有的抽象方法,创建该类对象,就可以调用方法,否则它必须是一个抽象类
定义格式:
历史上,接口中只有抽象方法,所以曾经所有的方法都是抽象的,默认也就是abstract
public abstract void method();
public void method();
public default void method(){
默认方法:
}
public static void method(){
静态方法: 不需要创建实现类,直接使用,让接口调用的方式更简单了
}
private void method(){
私有方法:
抽象方法调用
默认方法调用
静态方法调用
}
03,接口 使用格式1 抽象方法
实现:
子类和父接口的关系是实现 implements
实现步骤:
1,定义子类,实现父接口
2,重写方法
3,创建子类对象
4,调用方法
04,接口 使用格式2 默认方法
default关键字
使用: 子类实现接口,实现类可以直接调用默认方法,也可以重写默认方法
语法格式:
public default void method(){
}
作用:
可以被重写
不重写就是接口中的方法作用
存在意义就是直接使用
05,接口 使用格式3 静态方法
static,带有方法体
使用: 不需要子类就可以使用
06,接口 使用格式4 私有方法
private关键字
使用:
接口中自己使用,不被外界使用
本质上是一个默认方法,就是已经实现的方法,只能被接口内部使用
07,接口 多实现 基本原则
多实现:
接口的本质就是方法,实现类就是要实现所有接口的方法(历史),现在可以不实现默认方法和静态方法,私有方法本质上属于默认方法
08,接口 多实现 抽象方法的实现
注意:
接口中重名的抽象方法,只需要重写一次
09,接口 多实现 默认方法的实现
10,接口 多实现 优先级
优先级:
从左到右,
11,接口 多继承和成员特点
特点:
1,没有构造方法
2,没有静态代码块(用于给成员初始化的)
3,没有变量,只有常量
12,多态 概述和前提
封装
继承
多态
这三种面向对象的特性都是无处不在的
多态:
同一行为,在不同类中具有多个不同表现形式
1,前提: 继承或者实现二选一
2,方法重写,不重写,就失去了多态意义(不重写,使用的还是父类的方法)
3,父类对象指向子类对象
总结:
通过多态的形式,创建对象,执行效果是子类重写后的效果,表现出多种形态
13,多态 父类作为参数 传递子类对象
目的:
利用多态,代码更加灵活,传不同的子类对象进去,就会展现出不同的行为动作.
14,多态 水果案例 引出问题
需求:
不断扩展需求的过程中,只能不断扩展重载方法的个数吗?
需求总是无穷无尽的.
15,多态 水果案例 解决问题
解决方法:
通过使用父类作为参数来解决问题
16,多态 看家案例 接口作为参数
接口作为参数:
好处: 更加灵活,因为不是所有子类都属于同一个父类,有时候只是给实现类增加一个功能
这样让接口作为参数,会更好的实现动作
17,多态 转型 强制类型转换 父转子
问题:
父类可能没有实现子类的某些方法,在使用父类调用子类方法的时候就不能通过了.
解决方法:
强制类型转换
18,多态 转型 强制类型转换问题 instanceof
问题:
类型转换时候,可能会报错,先判断,再转换,避免异常
解决方法:
instanceof(): 是否属于类型
equals(): 是否是同一个值