为什么所有Java方法都不是静态的?

时间:2017-05-03 09:08:17

标签: java methods modifiers

我只是在这里检查我的推理,因为我认为我已经知道了答案。有人问我:无论我有多少个特定类的实例,给定的方法肯定会在每个对象中都有相同的操作。那么为什么Java开发人员为方法发明了静态修饰符呢?我们可以将它与静态变量进行对比。当然,在这里,每个对象对于给定的字段可以具有不同的值。

我的回答是,不,给定的方法在每个类的实例中都不会有相同的操作。例如,setter和getter在"相同的"类的每个实例中的方式,但它们的输出确实取决于类的实例。

1 个答案:

答案 0 :(得分:6)

相当广泛的问题;但是这里有各种简单的事实: 因为静态被认为是关于“好的OO”原则的异常

  • 静态会导致不同类之间的直接耦合。
  • 更重要的是:静态方法存在 no 多态性。 多态是OO编程的本质
  • 它不仅会影响您的代码库;它也可以使(单位)测试(更多)更难。

换句话说:默认情况下,您努力不使用静态。有些情况下有意义;但你必须仔细考虑那些。

或者,给我的个人两分:如果静态将是“更好的答案”,每个人仍然会在Pascal中编码并声称​​命令式编程是银软件工程的子弹。

但要在这里回答“其他”问题:“为什么我们需要静态呢?”

只是因为它有时候方便有用。当你转向java“系统类”;例如CollectionsObjects,您会在那里找到合理的数量的“有用”功能。这样就可以维护其他软件质量的重要属性;喜欢:单一责任原则。例如,sort()一个中央实现是有道理的;而不是直接对集合上的“附加”“可以排序”行为。