接口
关键字 interface
特点
1.关键字 interface
2. 接口是特殊的抽象类
3. #### 接口中定义的成员方法:抽象方法,default方法,私有静态方法,公有静态方法
3. 接口定义的属性都是public static final修饰的,是常量
4. 接口中没有构造方法
函数式接口
有且只有一个抽象方法(object中的方法除外),这样的接口可以称为函数式接口
@FunctionalInterface 作用:在编译时检查该接口是否是函数式接口
支持lambda表达式
1.语法:
(参数列表)->{方法体}
2.注意事项:
如果参数只有一个的,可以省略小括号;
如果方法体只有一句,可以省略大括号;
省略大括号后,如果有return关键字,必须省略return;
函数式接口四大类型
消费/生产的参数类型皆为包装类
1.消费型接口(Consumer)-消费者需要一个参数,无返回值
BiConsumer–消费者需要两个参数
2.生产型接口(supplier)
生产者不需要参数,直接返回数据
生产一个返回int的数据
IntSupplier sup4=TestSuplier::getAge;
System.out.pritln(sup4.getAsint());
引用无参构造,创建一个生产者对象
Supplier<Data> sup=Date::new;
System.out.println(sup.get())//new Data();
get()方法会调用构造方法
3.函数型接口(Function)
既是生产者又是消费者
interface Function<T, R>{
R apply(T t);
}
T是消费者。R是生产者
Function<String,intage> fun=s->String.valuesOf(s);
System.out.println(fun.apply("34.12"))//34
4.断言式接口(predicate)
返回的永远是Boolean;
是函数型接口的一种;
predicate <intager,intager> pre=(a,b)->(省略return) a>b;
pre.max(3,4)//false
intage i=2;
predicate<intager> pre=i::equal;//i是对象,equal方法返回值是Boolean
pre.m(4)//false;
类与接口之间的关系
类与类之间是单继承,类与接口之间是多实现
接口与接口之间是多继承
类可以在继承一个类的同时,实现一个(多个)接口