Java8新特性------接口中可以定义方法体

Posted 李晓娜

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java8新特性------接口中可以定义方法体相关的知识,希望对你有一定的参考价值。

 Java8比起以前的版本存在很大的变化,我们知道在之前的版本中接口只能是定义抽象的方法,是不能定义实现的,但是在java8环境下,这个不可能已经变得可能。下面我们通过例子一步一步的来讲解下java8的用法。

 定义静态方法

  在接口中定义的静态方法,不是抽象的,具体实现的,可以直接使用接口名称调用。

/**
 * Created by xiaona on 2016/5/30.
 */
public interface TestMethod 
    public static void method() 
        /**
         * 1、定义一个静态的带有方法体的方法
         * 2、接口不能创建对象,调用静态方法不需要对象
         * 3、接口名调用
         */
        System.out.println("接口中静态方法");

    

 调用:

  public static void main( String[] args ) 
        /**
         * 接口名称,直接调用---TestMethod(接口名称)
         */
        TestMethod.method();

 定义普通方法

  在接口中不仅仅是可以定义静态方法,还可以进行普通方法的定义,不过不是抽象,java8中,可以使用关键字default

//定义接口中默认方法

    /**
     * 不同于静态方法,默认方法是一个非静态方法
     * 对于非静态方法,只能通过对象进行调用
     * 但是接口是不能创建对象的名故而我们需要子类来实现接口
     */
    public default void  methodDefault()
        System.out.println();
    

  调用:

//        使用子类对象,调用接口中的默认方法
        Inter8Impl inter8 = new Inter8Impl();
        inter8.methodDefault();

//        使用多态的特点,接口指向自己的实现类,调用对应的方法
        TestMethod i88=new Inter8Impl();
        i88.methodDefault();
    

  此外,值得注意的是:面向对象中,java只是支持单继承,不支持多继承,一个类只能继承一个类,

  (1)如果多个接口定义了同样的静态方法,

          即使存在实现类,同时实现多个接口,仍然是不可使用实现类名调用接口的方法

  (2)如果多个接口定义了同样的默认方法

         实现类实现多个接口时,必须重写掉默认方法,否则编译失败。

  在接口中可以定义实现的方法体是java8的一大特性,可以定义多个静态或者默认的方法,静态必须加上static,默认方法必须加上default关键字。

以上是关于Java8新特性------接口中可以定义方法体的主要内容,如果未能解决你的问题,请参考以下文章

JAVA8新特性——接口定义增强

Java 8新特性-接口定义增强

Java 接口 新特性(Java8)

Java8 新特性

Java8 新特性 7自定义函数式接口

Java8新特性之函数式接口