why interface doesn't support static method?
Possible Duplicate:
Why can’t I declare static methods in an interface?
在接口体内部,我们不能声明或定义任何静态方法。原因是什么?有人能回答这个问题吗?
- 你应该提供你所说的语言。
- stackoverflow.com/questions/21817/…stackoverflow.com/questions/512877/…stackoverflow.com/questions/129267/…
- 我添加了Java标签,因为他唯一的其他问题是明确的Java接口。
- 如果这是一个重复:stackoverflow.com/questions/259026/…
我假设你在谈论Java,因为它是迄今为止最流行的语言,它有EDCOX1,0种类型。这可能是因为Java的设计者们认为接口是契约,实现不属于其中。Java的一般风格似乎倾向于严格,即不允许事物,除非有一个很好的理由允许它们而不是反过来。
不管怎样,静态方法实际上只是自由的(C样式)函数,只是更加冗长。你把它们放在什么样的课程中,唯一重要的原因是美学/代码组织。因此,不允许将它们放入接口中并不是一个严重的限制。
- +1-非常符合我要说的话,只是更好。:)如果要在类的层次结构中使用静态方法,请尝试使用抽象基类,而不是接口(如果这样可行?).
- @威尔:是的,这行得通。我认为这是一个丑陋的设计,但这只是主观的。不过,您应该记住一件事,如果在类层次结构的不同点上添加静态方法:不能重写静态方法,只能对其进行阴影处理。这意味着:如果x是y的父类,并且这两个类都有一个公共的静态方法f(),那么在某些情况下,很难判断您实际调用的是哪个版本的f()。