在java 8中编写接口时,我注意到我能够在接口中定义方法而没有任何编译时错误的行为。
public interface AdvanceMediaPlayer {
public static void playVlc(String fileName) {
System.out.println("play VLC");
}
public abstract void playMp4(String fileName);
}
请解释为什么会这样。据我所知,我们无法在接口内部实现方法。
答案 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
关键字声明。