Java基础(9):接口、Lambda

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

猜你喜欢

转载自blog.csdn.net/weixin_41300033/article/details/81838380