这节课我们来讲讲java8里接口可以写什么,再次强调,这种语法只在jdk1.8以上有效。
public class Java8InterfaceTeach { public static void main(String[] args) { //这里会报错是因为这个接口里没有未实现的抽象方法 //要想使用lambda表达式,接口里必须有且仅有一个未实现的抽象方法 Java8Interface java8Interface = new Java8Interface() {}; System.out.println(java8Interface.add(1,2)); System.out.println(Java8Interface.add("12","21")); } } interface Java8Interface{ /** * default方法: * java8里允许在接口里实现方法,不过要加default关键字,这样的方法不算抽象方法,就和普通方法一样 * 继承该接口的接口或实现该接口的类可以不必重写该方法,当然如果想要重写也没有问题 */ default int add(int i1, int i2) { return i1 + i2; } /** * 接口里还可以写静态方法 */ static String add(String s1, String s2) { return s1 + s2; } } /** * 如果一个类实现了两个接口,而这两个接口中有方法名和参数表完全相同的默认实现方法(就是加了default的方法) * 那么这个类必须重写这个方法 */ class Test implements interface1,interface2{ @Override public int add(int i1, int i2) { return i1 + i2; } } interface interface1{ default int add(int i1, int i2) { return i1 + i2; } } interface interface2{ default int add(int i1, int i2) { return i1 + i2 + 1; } }