如果我们可以在接口中使用默认方法和静态方法并在其他类中实现,那么如何说接口实现了100%抽象?
我们可以说接口实现了100%抽象吗?
我认为我们仍然可以这样说。或者至少可以说,接口中的static
和default
使得实现100%抽象的难度变得更大[<1]。static方法与类中的static
方法没有区别。在这两种情况下,方法API都是方法主体中代码的抽象边界。 我们可以为default
方法设置相同的参数。方法主体可以执行接口的所有后代的所有实例的实现所共有的操作,但是细节仍对调用方隐藏。那就是抽象边界。
default
和static
方法正在做的是允许抽象边界在继承图中进一步实现。如果正确使用它们,那将是一件好事,因为它会删除冗余或重复的代码。