为什么静态方法在接口中被视为“实用方法”?

ham*_*314 4 java static

我正在阅读有关接口的 Java 文档,并阅读了有关默认方法的章节。据我了解,当您定义一个接口并随后向其添加方法时,所有实现该接口的类都会中断,并且需要实现新方法。

因此,文档简要提到静态方法作为缓解此问题的选项,但也指出,它们将被视为“实用方法”而不是必需的:

如果将它们添加为静态方法,那么程序员会将它们视为实用方法,而不是必要的核心方法

为什么会出现这种情况/为什么它们会被视为“不重要”?

Vam*_*ire 5

静态方法不适用于类的实例,而是类本身的一部分。它们最常用于实用类型的任务,因此与面向对象有点矛盾,因此应该很少使用。

但是,默认方法!=静态方法。文档只是提到了静态方法,以展示如何在默认方法之前将某些内容添加到接口中而不破坏所有实现。

默认方法是通过指定该方法的默认实现(即使它只是一个throw new NotImplementedException())来向接口添加功能而不破坏现有实现的另一种方法。这些方法可以由实现此接口的具体类来实现,以提供它们的实际功能,从而覆盖该方法的默认实现。

对于静态方法,这是不可能的,因为它们属于类对象,而不是实例,因此不能被子类或实现覆盖。