1. 接口
- 一个类可以实现一个或多个接口。
- 接口:对类的一组需求描述,这些类要遵从接口描述的统一格式进行定义。
- 接口绝不能含有实例域,但可以提供常量(public static final)、 简单方法以及静态方法。
- 让类实现接口通常需要两个步骤:
1)将类声明为实现给定的接口(关键字implements)。
2)对接口中的所有方法进行定义。 - 接口中所有方法默认为public,但实现接口时必须把方法声明为public。
- 接口不能构造对象,但可以声明接口的变量,该变量必须引用实现了接口的类对象。
- 每个类可以实现多个接口。
- 具有克隆能力的接口:Cloneable;比较能力的接口:Comparable。
- 可以用default修饰符为接口方法提供一个默认实现:
public interface Collection
{
int size();
default boolean isEmpty()
{
return size == 0;
}
...
}
2. lambda 表达式
- lambda 表达式是一个可传递的代码块,可以在以后执行一次或多次。
3. 内部类
- 内部类:定义在另一个类中的类。
内部类既可以访问自身的数据域,也可以访问创建它的外围类对象的数据域。 - 局部内部类:定义在方法中,不能用public或private声明,作用域限定于声明这个局部类的块中。
局部类可以访问局部变量,但局部变量必须为final。 - 匿名内部类:
new SuperType(construction parameters)
{
inner class methods and data
}
SuperType 可以是接口,也可以是类。由于构造器名称必须与类名相同,因此匿名类不能有构造器,而是将构造器参数传递给超类构造器。
- 静态内部类:用 static 修饰。
4. 代理
- 利用代理可以在运行时创建一个实现了一组给定接口的新类。