Java 为什么界面没有';不支持静态方法?

Java 为什么界面没有';不支持静态方法?,java,interface,Java,Interface,可能重复: 在接口体内部,我们不能声明或定义任何静态方法。原因是什么?有人能回答这个问题吗 我假设您谈论的是Java,因为它是迄今为止最流行的具有接口类型的语言。这可能是因为Java的设计者认为接口是契约,而实现不属于契约。Java的一般风格似乎倾向于严格,也就是说,除非有很好的理由允许它们,否则不允许它们,而不是相反 不管怎样,静态方法实际上只是免费的(C风格)函数,只是更麻烦的冗长。将它们放在哪个类中很重要的唯一原因是美学/代码组织。因此,不允许将它们放在接口中不是一个严重的限制。您应该提

可能重复:


在接口体内部,我们不能声明或定义任何静态方法。原因是什么?有人能回答这个问题吗

我假设您谈论的是Java,因为它是迄今为止最流行的具有
接口类型的语言。这可能是因为Java的设计者认为接口是契约,而实现不属于契约。Java的一般风格似乎倾向于严格,也就是说,除非有很好的理由允许它们,否则不允许它们,而不是相反


不管怎样,静态方法实际上只是免费的(C风格)函数,只是更麻烦的冗长。将它们放在哪个类中很重要的唯一原因是美学/代码组织。因此,不允许将它们放在接口中不是一个严重的限制。

您应该提供您所说的语言。我添加了Java标记,因为他唯一的另一个问题是关于Java接口的如果您想在类的层次结构中使用静态方法,请尝试使用抽象基类而不是接口(如果可行?)。@Will:是的,可以。我认为这是一个丑陋的设计,但那只是主观的。但是,如果要在类层次结构的不同点添加静态方法,则应该记住一件事:不能重写静态方法,只能对其进行阴影处理。这意味着:如果X是Y的父类,并且它们都有一个公共静态方法f(),那么在某些情况下,很难判断实际调用的是哪个版本的f()。