java的interface和PHP的区别
在PHP中,接口interface中只能包含抽象方法,在7开始,接口以及类中的方法可以声明返回值类型
在Java中,接口interface可以有:
(1)默认方法。默认方法可以提供一个默认实现
(2)Object 类的方法。重新声明 的Object 类方法, 如 toString 或 clone, 这些声明有可能会让方法不再是抽象的。重新声明时不能也不需要extens Object
如果接口中只有一个抽象方法,如果同时存在默认方法、Object 类方法、静态方法。Java也会认为这是一个函数式接口,那么我们可以使用lambda作为函数式接口的实现
(3)在Java8中,我们可以使用匿名类去实现接口,而不需要去创建一个类,然后去implement这个接口。如果是函数式接口,甚至可以用lambda去表示这个方法的实现
1 //类名::静态方法引用去简化lambada表达式 2 static void staticMethodReference() 3 { 4 List<String> arrayList1 = new ArrayList<>(Arrays.asList("Peter", "Paul", "Mary" )); 5 arrayList1.stream().map(String::toUpperCase).forEach(System.out::println); 6 } 7 8 //通过匿名类去实现Function接口 9 static void anonymousClass() 10 { 11 List<String> arrayList1 = new ArrayList<>(Arrays.asList("Peter", "Paul", "Mary" )); 12 arrayList1.stream().map(new Function<String, String>() { 13 @Override 14 public String apply(String s) { 15 return s.toUpperCase(); 16 } 17 }).forEach(System.out::println); 18 }