如果我们可以使用Interface中的默认方法和静态方法,并在其他类中实现它,那么怎么能说该接口(interface)实现了100%抽象呢?
最佳答案
Can we say that the interface achieve 100% abstraction?
我想我们仍然可以这么说。或者至少我们可以说接口(interface)中的static
和default
并不会让实现 100% 抽象变得更加困难1。
接口(interface)中的静态
方法与类中的静态
方法没有什么不同。在这两种情况下,方法 API 都是方法主体中代码的抽象边界。
我们可以为 default
方法提供相同的参数。方法体可以执行接口(interface)所有后代的所有实例的实现所共有的事情,但细节仍然对调用者隐藏。这就是抽象边界。
default
和 static
方法正在做的是允许抽象边界在继承图上进一步实现。如果您正确使用它们,这是一件好事,因为它删除了冗余或重复的代码。
1 - 由程序员负责设计和实现 API,使其不成为有漏洞的抽象。仅仅使用接口(interface)并不能解决这个问题。
关于java - 当我们可以使用默认方法和静态方法时,接口(interface)如何提供 100% 抽象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61134557/