我正在阅读有关接口的Java文档,并且已经到了关于default methods的章节。据我所知,当您定义一个接口并稍后向其添加方法时,实现此接口的所有类都将中断并且需要实现新方法。
因此,文档简要提到静态方法作为缓解此问题的选项,但也指出它们将被视为“实用方法”而非必要:
如果他们将它们作为静态方法添加,那么程序员会将它们视为实用方法,而不是必要的核心方法。
为什么会这样?/为什么他们会被视为“不必要”?
答案 0 :(得分:4)
静态方法不适用于类的实例,但它是类本身的一部分。它们最常用于实用类型的任务,因此有点与面向对象相矛盾,所以应该稀疏地使用。
但是,默认方法!=静态方法。文档中只提到静态方法,以显示在默认方法之前如何将某些内容添加到接口而不会破坏所有实现。
默认方法是通过为该方法指定默认实现(即使它只是throw new NotImplementedException()
)来向接口添加功能而不破坏现有命令的另一种方法。这些方法可以通过实现此接口的具体类来实现,以提供它们所针对的实际功能,从而覆盖该方法的默认实现。
使用静态方法这是不可能的,因为它们属于类对象,而不属于实例,因此不能被子类或实现覆盖。
答案 1 :(得分:2)
因为您通常在static
上调用class
方法,而不是在界面上调用,例如:
Integer.parseInt();
- 在具体课程Integer
答案 2 :(得分:2)
因为静态方法是自包含的,所以它们不依赖于接口中的其他方法。而且,java代码中的大多数静态方法实际上都是实用方法。