为什么我们需要Java中的默认方法?
我正在查看与7相比的Java 8新闻,除了非常有趣的东西,如lambdas或新的时间框架,我发现引入了一个新的功能(?):默认方法。
我在本文中找到了以下示例:
public interface Math {
int add(int a, int b);
default int multiply(int a, int b) {
return a * b;
}
}
这对我来说似乎很奇怪。上面的代码看起来像一个具有已实现方法的类。那么,为什么要在接口中引入默认方法呢?这种方法的实际优势是什么?abstract
在同一篇文章中,我读到了这个解释:
为什么要将方法添加到接口中?这是因为接口与其实现类的耦合太紧密。也就是说,不可能在不破坏实现器类的情况下在接口中添加方法。在接口中添加方法后,其所有实现的类都必须声明此新方法的方法主体。
好吧,这根本不能说服我。恕我直言,我相信当一个类实现一个接口时,必须为它中的每个方法声明方法体。这当然是一个约束,但它也证实了它的“性质”(如果你理解我的意思......
如果每个继承类都有通用逻辑,则将其放入实现类中。abstract
那么,默认方法的真正优势是什么?(它看起来更像是一种解决方法,而不是新功能...)
更新我知道这种方法是为了向后兼容,但它仍然不能说服我太多。接口表示类必须具有的行为。因此,实现某个接口的类肯定具有此行为。但是,如果有人可以任意更改接口,则此约束已打破。行为可以随时改变...我错了吗?