java - 当我们可以使用默认方法和静态方法时,接口(interface)如何提供 100% 抽象?

标签 java oop interface abstraction

如果我们可以使用Interface中的默认方法和静态方法,并在其他类中实现它,那么怎么能说该接口(interface)实现了100%抽象呢?

最佳答案

Can we say that the interface achieve 100% abstraction?

我想我们仍然可以这么说。或者至少我们可以说接口(interface)中的staticdefault 并不会让实现 100% 抽象变得更加困难1

接口(interface)中的静态方法与类中的静态方法没有什么不同。在这两种情况下,方法 API 都是方法主体中代码的抽象边界。

我们可以为 default 方法提供相同的参数。方法体可以执行接口(interface)所有后代的所有实例的实现所共有的事情,但细节仍然对调用者隐藏。这就是抽象边界。

defaultstatic 方法正在做的是允许抽象边界在继承图上进一步实现。如果您正确使用它们,这是一件好事,因为它删除了冗余或重复的代码。


1 - 由程序员负责设计和实现 API,使其不成为有漏洞的抽象。仅仅使用接口(interface)并不能解决这个问题。

关于java - 当我们可以使用默认方法和静态方法时,接口(interface)如何提供 100% 抽象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61134557/

相关文章:

oop - 是否可以在 Kotlin 接口(interface)中编写 equals 方法的默认实现?

java - JAXB 无法编码(marshal)类型 "java.util.HashMap"

php - 如何在 PHP 中使用接口(interface)和魔术方法

java - 构建测试数据采用哪种策略

java - Robotium_constructor 在 super 的 NotepadTest 方法中弃用了消息

java - 允许类的属性是可选的(基本 OOP Java)

python - 试图创建只读属性属性 - getter 返回初始化值,直接访问返回更改后的值

java编码: public interface extend remote

java - 使用适用于 Android 的 Firebase 发送电子邮件验证时未检查的分配警告

java - 如何在 Eclipse 中打开第二个包资源管理器窗口?