Java 8 (又称为 jdk 1.8) 是 Java 语言开发的一个主要版本。 Oracle 公司于 2014 年 3 月 18 日发布 Java 8 。Java8包含了很多新的特性,可以简化开发,提升代码的可读性。
java8的一些重要新特性包括:
- 接口增强
- 方法引用
- Lambda表达式
- Stream
- 新工具
- Nashorn,JavaScript引擎
其中还有一些其他的特性,如:Data Time API、Optional类、默认方法等;
1.接口增强是什么:
在java8以前的版本中,定义一个接口时,所有的方法必须是抽象方法,不可以有具体的实现,但是在java8中定义一个接口时,在满足特定的前提下,可以有方法的实现,这样一个接口中可以有属性,有抽象方法,有具体的方法,java8跟以前的版本相比,功能明显变得强大了。
2.接口中如何定义具体的方法实现?
接口中定义具体的方法是有限制的,不能像我们普通的类定义方法一样,在接口中定义方法,只能定义default和static类型的方法,示例如下:
public interface InterfaceDemo {
//default 和 static方法的出现为了解决该借款的子类代码重复的问题
default void defaultMethod(){
System.out.println("defaultMethod!!!");
}
default int sum(int a,int b){
return a+b;
}
static void staticMethod(){
System.out.println("staticMethod!!");
}
static int multiplication(int a,int b){
return a*b;
}
}
这里除了关键字修饰,其他地方跟普通方法定义并没有什么不同。
3.如何调用:
- default方法调用:定义一个类实现接口,new该类的实例,即可调用。
- static方法调用:类名.方法名() 调用,这根以前的静态方法调用方式一样。
示例代码如下:
public class InterfaceImpl implements InterfaceDemo{
public static void main(String[] args) {
InterfaceDemo id = new InterfaceImpl();
int i= id.sum(1,9);
System.out.println(i);
id.defaultMethod();
InterfaceDemo.staticMethod();
}
}
4.应用场景:
当多个类实现一个接口的某个方法时,方法的具体实现代码相同,这样就会造成代码重复问题。接口增强就相当于把公共的代码抽离出来,放入接口定义中,这样实现类对于该方法就不用重新定义,直接调用即可,这很好的解决了实现该接口的子类代码重复的问题