java8之接口加强

  Java8是由oracle公司于2014年3月正式发布,它是继java5 以来最重要的发布版本。Java8包含了不少新的特性,能够简化开发,提高代码的可读性。java

  Java8的一些重要新特性包括:oracle

      l 接口加强ide

      l 方法引用学习

      l Lambda表达式spa

      l Streamcode

  其中还有一些其余的特性,好比注解的更新,以及一些新的API等。以上四个特性在java8的开发中会比较经常使用。由于接口加强特性比较独立,而其余三个特性或多或少都有关联关系。这里先记录下接口加强特性的学习笔记。blog

1.什么是接口加强?接口

  在java8之前的版本中,定义一个接口时,全部的方法必须是抽象方法,不能有具体实现,这是java语法规定的。可是在java8中定义一个接口时,在知足特定的前提下,能够有方法的具体实现。这样一个接口中能够有属性,能够有抽象方法,也能够有具体的方法,这跟java8之前的接口比,明显接口的功能变得强大了。ip

2.接口中如何定义具体的方法实现?开发

  首先,接口中定义具体的方法实现是有限制的,它不能像咱们在一个普通类那样随便定义方法实现,它只能定义defaultstatic类型的方法。示例代码以下:

interface MyInterface {
    public void print();

    // default 和 static 方法的出现为了解决实现该接口的子类代码重复的问题
    default void defaultMethod() {
        System.out.println("default method invoked! ");
    }
    
    default int add(int a, int b){
        return a + b;
    }
    
    static void staticMethod() {
        System.out.println("static method invoked! ");
    }
    
    static int multiply(int a, int b){
        return a * b;
    }
    
    //...
}
View Code

  除了关键字修饰,其余跟普通的方法定义并无什么不一样。

3.如何调用

  1)default方法调用

  定义一个类实现该接口,new该类的实例,调用便可。

  2)static方法调用

  类名.方法名() 调用,这跟之前的静态方法调用方式同样。

  示例代码以下:

public class InterfaceTest {
    public static void main(String[] args) {
        
        MyInterface msg = new InterfaceImpl();
        msg.print();

        msg.defaultMethod(); //调用default方法
        MyInterface.staticMethod(); //调用static方法
    }
}

interface MyInterface {
    public void print();

    // default 和 static 方法的出现为了解决实现该接口的子类代码重复的问题
    default void defaultMethod() {
        System.out.println("default method invoked! ");
    }
    
    default int add(int a, int b){
        return a + b;
    }
    
    static void staticMethod() {
        System.out.println("static method invoked! ");
    }
    
    static int multiply(int a, int b){
        return a * b;
    }
    
    //...
}
View Code

 

4. 应用场景

  想象这样一中状况,当多个类实现一个接口的某个方法时,方法的具体实现代码相同,这样就会形成代码重复问题。接口加强就至关于把公共的代码抽离出来,放入接口定义中,这样实现类对于该方法就不用从新定义,直接调用便可,这很好的解决了实现该接口的子类代码重复的问题。

相关文章
相关标签/搜索