-4

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

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

4

1 回答 1

7

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

  • static导致不同类之间的直接耦合。
  • 更重要的是:静态方法没有多态性。而多态是面向对象编程的精髓!
  • 它不仅会影响您的代码库;它还可以使(单元)测试(更)难。

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

或者,给我个人两分钱:如果静态是“更好的答案”,那么每个人仍然会在 Pascal 中编码,并声称命令式编程是软件工程的灵丹妙药。

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

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

于 2017-05-03T09:16:39.833 回答