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新特性终极指南