Java8引入了 默认方法 和 静态方法 ,这两个方法可以直接在接口中写实现,不影响接口的实现类,也就是解决了接口兼容的问题。
Java8之前,每一次对接口的修改都会影响其的全部实现。
default 类.super.默认方法 对象.方法 类.方法
被
default
关键字修饰的方法。
被
static
关键字修饰的方法。
public interface Animal { public default void run() { System.out.println("run"); }; public static void eat() { System.out.println("eat"); } public static void sleep() { System.out.println("sleep"); } }
public class Dog implements Animal { // 报错 // @Override // public default void run() { // Animal.super.run(); // }; @Override public void run() { System.out.println("dog run"); }; public void run2() { Animal.super.run(); }; // 报错 // @Override // public static void eat() { // System.out.println("eat"); // } // 报错 // @Override // public void eat() { // System.out.println("eat"); // } public static void eat() { System.out.println("dog eat"); } public static void sleep() { System.out.println("dog sleep"); } public static void main(String[] args) { Animal a = new Dog(); a.run(); Animal.eat(); Animal.sleep(); } }
dog run eat sleep
Java 8 新特性
Java 8新特性终极指南