【发布时间】:2014-05-06 07:50:51
【问题描述】:
假设我有两个接口:
public interface I1
{
default String getGreeting() {
return "Good Morning!";
}
}
public interface I2
{
default String getGreeting() {
return "Good Afternoon!";
}
}
如果我想同时实现它们,将使用什么实现?
public class C1 implements I1, I2
{
public static void main(String[] args)
{
System.out.println(new C1().getGreeting());
}
}
【问题讨论】:
-
如果
I2扩展I1和C1实现I2会怎样!!?我认为这会编译......还是我错了? -
感谢您的提问!我刚刚尝试过:是的,这将编译,无论 I1 中的 getGreeting() 是抽象的还是默认的。如果I1中的方法是默认的,这意味着你可以覆盖interface-inheritance中的默认实现...
-
是的,完全是......它将被继承的方法。
-
这是一篇关于默认方法的文章:Java 8 : Default method in Interface