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     }
原文地址:https://www.cnblogs.com/fengliang/p/14128106.html