JDK1.8新特性(接口实现方法)

一:简介

我们通常所说的接口的作用是用于定义一套标准、约束、规范等,接口中的方法只声明方法的签名,不提供相应的方法体,方法体由对应的实现类去实现。

在JDK1.8中打破了这样的认识,接口中的方法可以有方法体,但需要关键字static或者default来修饰,使用static来修饰的称之为静态方法,静态方法通过接口名来调用,使用default来修饰的称之为默认方法,默认方法通过实例对象来调用。

静态方法和默认方法的作用:

静态方法和默认方法都有自己的方法体,用于提供一套默认的实现,这样子类对于该方法就不需要强制来实现,可以选择使用默认的实现,也可以重写自己的实现。当为接口扩展方法时,只需要提供该方法的默认实现即可,至于对应的实现类可以重写也可以使用默认的实现,这样所有的实现类不会报语法错误:Xxx不是抽象的, 并且未覆盖Yxx中的抽象方法。

二:示例

接口类

public interface IAnimal {
    void run();

    static void eat(){
        System.out.println("eat");
    }

    default  void sleep(){
        System.out.println("sleep");
    }
}

实现类

public class Test implements IAnimal {

    @Override
    public void run() {
        System.out.println("run");
    }

    public static void main(String[] agrs){
        Test test = new Test();
        test.run();
        test.sleep();
        IAnimal.eat();
        new IAnimal(){

            @Override
            public void run() {
                System.out.println("run by myself");
            }
        }.run();
    }
}

结果

run
sleep
eat
run by myself

你可能感兴趣的:(JDK1.8新特性,JDK1.8新特性)