Java学习Day04

第六章 接口、lambda表达式与内部类

6.1接口

  1. 接口是Java中最重要的概念,可以理解为一种特殊的类,里面全部是由全局常量和公共的抽象方法所组成。
  2. 接口的格式:
1
2
3
4
interface interfaceName {
全局常量
公共抽象方法
}
    • 接口的实现也必须通过子类,使用关键字implements,而且接口是可以多实现的。
    • 接口被子类继承,子类(如果不是抽象类)必须重写接口中的所有抽象方法。
    • 一个子类可以同时继承抽象类和实现接口
    • 一个接口不能继承一个抽象类,但是却可以通过extends关键字同时继承多个接口,实现接口的多继承。
    • 允许声明接口的变量,但该接口变量必须引用实现了该接口的类对象。
    • 接口里定义的变量自动是public static final 的,也即接口内只能定义常量。
    • 接口内不能包含实例域或静态方法。
  1. 解决默认方法冲突。

    如果先在一个接口中将一个方法定义为默认方法,然后又在超类或另一个接口中定义了一个同样的方法,结果会是怎样?

    规则如下:

    1)超类优先。如果超类提供了一个具体方法,同名而且有相同参数类型的默认方法(接口中的默认方法)会被忽略。

    2)接口冲突。如果一个超接口提供了一个默认方法,另一个接口提供了同名而且参数类型(无论是否为默认参数)相同的方法,必须在实现类中覆盖这个方法来解决冲突。

  2. 回调(callback)是一种常见的程序设计模式。在这种模式中,可以指定某个特定事件发生时该采取的动作。

6.2lambda表达式

  1. 基本语法:

    1
    2
    3
    (parameters) -> expression

    (parameters) ->{ statements; }
  2. 虽然看着很先进,其实Lambda表达式的本质只是一个”语法糖”,由编译器推断并帮你转换包装为常规的代码,因此你可以使用更少的代码来实现同样的功能。但建议不要乱用,因为这就和某些很高级的黑客写的代码一样,简洁、难懂、难以调试,维护人员想骂娘。

6.3内部类

内部类(inner class)是定义在另一个类中的类。

6.4代理