接口
接口其实就是一个特殊的抽象类
如果一个抽象类的方法全是抽象的,并且属性是被public static final修饰的,直接使用接口修饰该类
接口的定义 interface
- 制定标准
- 可扩展性
- 解耦合
- 接口与接口之间采用 多继承
- 接口与类之间采用 多实现implements
特点:
- 接口是特殊的抽象类
- 接口中定义的成员方法都是抽象方法
- 接口中的属性都是被public static final 修饰的(接口中省略修饰符)
- 接口中没有构造方法
- 接口中允许定义
default
成员方法 - 接口中允许定义私有成员方法
- 接口中允许定义公开/私有 静态方法
函数式接口:
如果接口中,有且只有一个抽象方法,那么这个接口被称为函数式接口
编译时检查 @FunctionalInterface
- 函数式接口 支持 lambda 表达式(作用:简化匿名内部类的写法)
- lambda 语法:(参数列表) ->{代码实现}
—> 最终的产物是 快速构造函数式接口的子类对象
- (参数列表) 指的就是 唯一的一个抽象方法的参数 列表
->
固定的- {代码实现} 指的是 抽象方法的具体实现
注意:
- 在 lambda 表达式的参数列表中:
a) 所有参数的类型 可以省略不写
b) 如果 有且只有一个参数,则可以省略 小括号 - 在 lambda 表达式的 代码实现 中:
a) 如果 代码的实现 只有一行代码,则可以省略 大括号,且该语句结尾的分号也必须省略
b) 如果省略大括号后,该语句包含 return ,那么return 也要省略
案例一 :
接口
@FunctionalInterface
// 检查接口是否满足 函数式接口(有且只有一个抽象方法)
public interface ATM {
int getMoney(int money);
}
实现类
public class ATMTest{
public static void main(String[] args) {
/*int m = getMon