一 接口组成更新概述
接口的组成
- 常量 public static final
- 抽象方法 public abstract
- 默认方法(Java8)
- 静态方法(Java8)
- 私有方法(Java9)
二 接口中默认方法
使用场景,当一个接口需要添加一个方法,但是有些实现类不需要而被迫要重写该方法,就可以用默认方法。
定义格式:
- 格式:public default 返回值类型 方法名(参数列表){}
- 范例:
public default void show(){}
注意事项
- 默认方法不是抽象方法,不强制被重写。但是可以被重写,重写时去掉default关键字
- public可以省略,default不能省略
三 接口中静态方法
定义格式:public static 返回值类型 方法名(参数列表){}
范例:
public static void show(){}
注意事项:
- 静态方法只能通过接口名调用,不能通过实现类名或者对象名调用
- public可以省略,static不能省略
四 接口中私有方法
- 格式1:private 返回值类型 方法名(参数列表){}
- 范例2:
private void show(){}
- 格式2:private static 返回值类型 方法名(参数列表){}
- 范例2:
private static void method(){}
注意事项:
- 默认方法 default 可以调用私有的静态 private static 方法和非静态 private 方法
- 静态方法 static 只能调用私有的静态 private static 方法
五 方法引用
//方法引用符号
usePrintable(System.out::println);
//可推导的就是可省略的
引用类方法
引用类的静态方法
public class ConvertDemo {
public static void main(String[] args) {
// userConverter( s ->
// Integer.parseInt(s)
// );
//引用类方法
userConverter(Integer::parseInt);
// Lambda表达式呗类方法替代的时候,它的形式参数全部传递给静态方法作为参数
}
private static void userConverter(Convert c){
int number = c.convert("666");
System.out.println(number);
}
}
引用对象的成员方法
- 格式: 对象::成员方法
Lambda表达式被类的实例方法替代的时候,第一个参数作为调用者,后面的参数全部传递给该方法作为参数。
userMyString((s,x,y)->s.substring(x,y));
useMyString(String::substring);
引用构造器(构造方法)
- 格式:类名::new
- 范例:Student::new
//Lambda表达式被构造器替代的时候,它的形式参数全部传递给构造器作为参数
useStudentBuilder((name,age)->new Studetn(name,age));
useStudentBuilder(Student::new);