栏目:Java8新特性 作者:admin 日期:2018-10-30 评论:0 点击: 829 次
在JDK8之前,接口不能定义任何实现。这意味着在Java8以前的版本中,由接口定义的方法是抽象的,不包括方法体。JDK8版本的发布改变了这一点,其中给接口添加了一个新的功能:默认方法。默认方法允许为接口方法定义默认实现。也就是说,通过使用默认方法,现在可以为接口方法提供方法体,使其不再是抽象方法。
1 2 3 4 5 6 7 8 9 10 |
interface InterfaceA { default void say() { System.out.println("InterfaceA"); } } public class DefaultMethod implements InterfaceA{ public static void main(String[] args) { new DefaultMethod().say(); } } |
第一种情况:InterfaceA和InterfaceB两个并行接口,DefaultMethod同时实现InterfaceA和InterfaceB接口,则DefaultMethod必须重定义默认方法才可以使用。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
public interface InterfaceA { default void say() { System.out.println("InterfaceA"); } } public interface InterfaceB { default void say() { System.out.println("InterfaceB"); } } public class DefaultMethod implements InterfaceA, InterfaceB { public static void main(String[] args) { DefaultMethod dm = new DefaultMethod(); dm.say(); } @Override public void say() { } } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
public interface InterfaceA { default void say() { System.out.println("InterfaceA"); } } public interface InterfaceB extends InterfaceA { default void say() { System.out.println("InterfaceB"); } } public class DefaultMethod implements InterfaceB { public static void main(String[] args) { DefaultMethod dm = new DefaultMethod(); dm.say(); } } |
JDK 8还向接口添加了另一个新功能:定义一个或多个static方法的能力。与类中的static方法一样,接口定义的static方法可以由任何对象单独调用。因此,要调用static方法,接口的实现不是必需的,接口的实例也不是必需的。但对static方法的调用是通过指定接口名称,后跟一个句点和方法名称来实现的。调用static 方法的一般形式如下:
------====== 本站公告 ======------
金丝燕网,一个严谨的网站!