美文网首页
Java 接口知识点

Java 接口知识点

作者: 07120665a058 | 来源:发表于2018-09-03 09:56 被阅读3次
  • 接口的特性
什么是接口:是为了规范行为,提供约束,从而规定的一系列行为
接口:默认是抽象的
接口:不能实例化
接口:没有private
接口:可以有多个抽象方法(抽象方法没有body),也可以有多个default / static 方法
接口: default 方法可以不被子类重写,其他方法(public /abstract)必须在实现类中重写
接口只能继承接口,不能实现接口 (interface extends interface)
abstract 声明的类不能实例化
instance of 在继承 / 实现中都可以用来判断是否是实例
  • 函数式接口
@FunctionalInterface注解来显式指定一个接口是函数式接口
函数式接口:只能有一个抽象方法

举例:
public interface StringFunc {
     String getString();
}

StringFunc lambda = () -> "Hello"; //() -> "Hello" 相当于,实现了StringFunc接口
final String expect = "Hello";
assertEquals(expect, lambda.getString());
  • 抽象类和接口区别
单继承,一个类只能继承一个父类,有 public / private 
多接口,一个类可以实现多个接口(当实现了多个接口时,可以显示通过 父类.super.method()来指定调用哪个父类的方法,而且必须重写方法,哪怕是default方法)
接口默认是public, 类里面默认是package-private
  • Lambda表达式
::  Method Reference
Lamda:是一个函数式接口
Lambda:允许把函数作为一个方法的参数
Lambda:只能引用标记了 final 的外层局部变量,不能在 lambda 内部修改定义在域外的局部变量,会有编译错误。
Lambda:在编译时,表达式里面的变量直接定义在闭包(closure)里面,函数执行完不会销毁,闭包保存了变量定义时的环境
  • java常用接口
Runnable :run = ()->{}

Consumer:void accept(T t)  = (a) ->{}
BiConsumer:void accept(T t, U u)  = (a,b) ->{}
IntConsumer:void accept(int value)

Predicate:boolean test(T t)
BiPredicate:boolean test(T t, U u)
IntPredicate:boolean test(int value)

Supplier:T get()  = () ->{return a }
IntSupplier: int getAsInt()  = () ->{return int }

Function: R apply(T t)  = (T) ->{return R }
BiFunction:R apply(T t, U u)
IntFunction:R apply(int value)

相关文章

网友评论

      本文标题:Java 接口知识点

      本文链接:https://www.haomeiwen.com/subject/rtcbwftx.html