- 使用接口的好处:通用性、隔离性。
- 定义接口的格式:
public interface 接口名 {
// ...
} - 接口的组成部分:
- 抽象方法【核心内容】
- 常量
- 默认方法(Java 8)
- 静态方法(Java 8)
- 私有方法(Java 9)
- 定义一个抽象方法,格式:
public abstract 返回值类型 方法名(参数类型 参数名);- 修饰符public abstract也可以省略不写
- 抽象方法不可以写方法体大括号
- 接口要想使用,一定要有一个实现类。如何实现?
public class 类名称 implements 接口名 {
// 覆盖重写所有的抽象方法
} - 如何覆盖重写(Override)抽象方法呢?一般步骤:
- 将抽象方法抄写过来
- 去掉abstract关键字
- 写上方法体
- 使用接口和实现类的一般格式:
- 创建:接口名称 引用名 = new 实现类名称();
- 调用:引用名.抽象方法名(参数);
- 注意:
- 只能调用左侧接口当中定义好的方法,无法调用右侧类当中特有的方法。
- 运行程序的时候,方法的执行者其实是右边的类对象。
- “调用的时候看左边,但是运行的时候看右边。”
- 从Java 8开始,没有接口的实现类,也可以直接使用接口:Lambda表达式。Lambda表达式就替代了实现类。
- Lambda使用前提:一定要有函数式接口才能用,没有函数式接口就不能用Lambda表达式。
- 函数式接口:有且仅有一个抽象方法的接口。无所谓有没有@FunctionalInterface,这是一个可选的检测手段而已。
- 使用Lambda必须有推断环境:
- 要么根据参数类型传参来推断函数式接口
- 要么就根据赋值语句左侧类型来推断函数式接口
- Lambda表达式的标准格式:(int a, int b) -> { return a + b;}
- 一些参数(方法的参数)
- 一个箭头
- 一些代码(方法体)
- Lambda表达式的简便格式:
(int num) -> {return ++num;}
(num) -> {return ++num;}
num -> {return ++num;}
num -> ++num;- 参数的类型可以省略
- 如果有且仅有一个参数,那么小括号可以省略
- 如果有且仅有一个语句,那么大括号和return也可以省略
Java基础(9):接口、Lambda
猜你喜欢
转载自blog.csdn.net/weixin_41300033/article/details/81838380
今日推荐
周排行