Java函数式接口的介绍

接口

1、什么是接口

在java中,接口是与类同一级别的一种类型

2、接口区别于类,具有哪些特性?

  • 关键字为interface
  • 可以实现(implements),但不可以继承(extends)
  • 一个类可以实现多个接口,但是一个类只能有一个父类
  • 接口的权限修饰符仅为public和默认

java中的四个权限修饰符
1)public和默认
关注点在是是同一个包中,public表示无论是否在同一个包中,都有权限;而默认的情况仅在同一个包中有权限
2) protected和private
关注点在是否具有继承性,private表示不具有继承性,仅能自己使用;而protected具有继承性,所有的子类都可以使用(注意!!!!!同一个包中不具有继承的其它类也可以使用)
类和接口只能通过public和默认修饰,但是内部类可以用四种修饰符修饰

同包自己 同包非自己 不同包子类 不同包非子类
public Y Y Y Y
protected Y Y Y N
默认不写 Y Y N N
private Y N N N
  • 没有构造函数,不可以被实例化,类具有(抽象类当然也具有,虽然抽象类不能被实例化)
  • 接口中:方法+常量
    • 方法:public abstract,无论是否显式表达,都是公共的&抽象的
    • 常量:public static final,无论是否显式表达,都是公共的&全局的
  • 如果一个类实现了该接口,那么必须实现该接口的全部方法,否则该类为抽象类

3、jdk8让接口有了一些新特性

  • 可以有变量型属性
  • 可以有静态方法static
    • 静态关键字和抽象关键字相冲突,是不能同时修饰同一个方法的
    • 可以直接通过接口名.方法()调用
    • staticdefault不能同时修饰方法
    • 接口中的静态方法只能通过接口调用,不能通过实现接口的类的对象调用
  • 可以有非抽象方法default修饰
    • 可以使用接口中属性
    • 可以被实现类使用
    • 可以被继承类重写
    • 为什么支持默认方法重写:解决多个实现类同名方法的问题,可以通过加default,让实现类重写来解决冲突问题
    • 不支持默认方法前的重名问题:!!没有default的多接口实现存在同名问题,但由于之前默认是抽象方法,所以一定会在实现类中“重写“——如果,两个接口中的方法完全一致,则默认实现了两个接口中的方法;如果参数满足重载的特性,则它们需要分别被实现;如果除了返回值不同其他都相同,则编译会报错,该类无法同时实现这两个接口
    • default方法产生的原因:如果接口A被很多类实现了,如果这个时候想要修改接口,实现接口的全部类全部都要修改,成本太大,这时如果给该方法用default关键字修饰,则这些类可以不用修改

函数式接口

1、什么是函数式接口
如果一个接口,它有且只有一个抽象方法(可以有默认方法和常量等),那么该接口就是函数式接口

  • 实现函数式接口可以通过lambda表达式进行实现
  • 可以标注@FunctionalInterface注解
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值