在java 8中的接口内添加方法实现

时间:2015-07-16 10:40:55

标签: java interface java-8

在java 8中编写接口时,我注意到我能够在接口中定义方法而没有任何编译时错误的行为。

public interface AdvanceMediaPlayer {
    public static void playVlc(String fileName) {
        System.out.println("play VLC");
    }
    public abstract void playMp4(String fileName);
}

请解释为什么会这样。据我所知,我们无法在接口内部实现方法。

3 个答案:

答案 0 :(得分:1)

Java8提供了创建默认方法实现的能力:

https://docs.oracle.com/javase/tutorial/java/IandI/defaultmethods.html

答案 1 :(得分:0)

  

Java 8引入了“Default Method”新功能,允许   开发人员在不破坏的情况下向接口添加新方法   现有的这些接口的实现。它提供了灵活性   允许接口定义实现,它将在默认情况下用作   具体类无法提供实现的情况   对于那种方法。

请参阅this了解更多信息。

答案 2 :(得分:0)

Java 8使您能够在接口中声明静态和默认方法。

实现类不能覆盖静态接口方法。它只能这样调用:

AdvanceMediaPlayer.playVlc(fileName);

实现类可以覆盖默认方法。它使用default关键字声明。