gpt4 book ai didi

java - 为什么我们需要 Java 中的默认方法?

转载 作者:搜寻专家 更新时间:2023-10-30 19:55:01 25 4
gpt4 key购买 nike

<分区>

我正在查看与 Java 7 相比的 Java 8 新闻,除了 lambdas 或新时间框架等非常有趣的东西外,我发现引入了一个新功能(?):默认方法 .

我在 this article 中找到了以下示例:

public interface Math {

int add(int a, int b);

default int multiply(int a, int b) {
return a * b;
}
}

我觉得很奇怪。上面的代码看起来像一个带有实现方法的抽象类。那么,为什么要在接口(interface)中引入默认方法呢?这种方法的实际优势是什么?

在同一篇文章中,我读到了这个解释:

Why would one want to add methods into Interfaces? We’ll it is because interfaces are too tightly coupled with their implementation classes. i.e. it is not possible to add a method in interface without breaking the implementor class. Once you add a method in interface, all its implemented classes must declare method body of this new method.

嗯,这根本无法说服我。恕我直言,我相信当一个类实现一个接口(interface)时,显然必须为其中的每个方法声明方法体。这固然是一个约束条件,但也是对其“性质”的确认(如果你明白我的意思……)

如果您对每个继承类都有共同的逻辑,您可以将其放入实现抽象类中。

那么,默认方法的真正优势是什么?(它看起来更像是一种变通方法而不是新功能...)


更新 我知道这种方法是为了向后兼容,但它仍然不能让我信服。接口(interface)表示类必须 具有的行为。所以实现某个接口(interface)的类肯定有这种行为。但如果有人可以任意更改界面,这个约束就被打破了。行为可以随时改变……我错了吗?

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com