当前位置: 首页 > 知识库问答 >
问题:

何时使用静态方法

公西天逸
2023-03-14

我在想什么时候使用静态方法?假设我有一个类有几个getter和setter,一两个方法,并且我希望这些方法只能在类的实例对象上调用。这是否意味着我应该使用静态方法?

示例:

Obj x = new Obj();
x.someMethod();

...或:

Obj.someMethod(); // Is this the static way?

我很困惑!

共有1个答案

巫煌
2023-03-14

一个经验法则:问问自己“调用这个方法是否有意义,即使还没有构造对象?”如果是这样,它肯定应该是静态的。

因此,在类car中,您可能有一个方法:

double convertMpgToKpl(double mpg)

...这将是静态的,因为人们可能想知道35mpg会转换成什么,即使没有人造过。但此方法(它设置一个特定car的效率):

void setMileage(double mpg)
Car theMoreEfficientOf(Car c1, Car c2)

虽然可以将其转换为非静态版本,但有些人会争辩说,由于没有“特权”选择哪个car更重要,因此不应该强迫调用方选择一个car作为将对其调用方法的对象。但是,这种情况只占所有静态方法的一小部分。

 类似资料:
  • 问题内容: 我想知道何时使用静态方法?假设我有一个带有几个和的类,一个或两个方法,并且我希望这些方法只能在该类的实例对象上调用。这是否意味着我应该使用静态方法? 例如 要么 我很困惑! 问题答案: 一个经验法则:问自己“即使尚未构建Obj,调用此方法是否有意义?” 如果是这样,那肯定是静态的。 因此,在一个类中,Car你可能有一个静态的方法,因为即使没有人制造过汽车,也可能想知道35mpg转换为什

  • 问题内容: 我想知道何时使用静态方法?假设我有一个带有几个getter和setter的类,一个或两个方法,并且我希望这些方法只能在该类的实例对象上调用。这是否意味着我应该使用静态方法? 例如 要么 (这是静态方式吗?) 我很困惑! 问题答案: 一个经验法则:问自己“即使尚未构建Obj,调用此方法是否有意义?” 如果是这样,那肯定是静态的。 因此,在一个类中,你可能有一个静态的方法,因为即使没有人制

  • 除非类是私有的或者是Java API的一部分,否则我认为使用static不像使用OOP那样有优势。 更新:在Java中找到有用的答案:何时使用静态方法/变量

  • 我不知道什么时候在程序中使用一个静态/非静态变量。 我理解非静态/静态变量之间的区别,但我只是不知道何时使用每一个变量。那么在上面的代码中,为什么函数不能是静态的呢?(什么时候应该是静态的?)

  • 问题内容: 何时以及如何使用构造函数 以及何时以及如何使用getInstance()(静态工厂方法) 两者有什么区别?我一直使用构造函数,但是什么时候应该使用呢? 问题答案: 每个人似乎都专注于单例,而我认为问题实际上是关于 构造函数与静态工厂方法 。 这实际上是 项目1:考虑静态工厂方法,而不是 Joshua Bloch 的 Effective Java 的构造函数 : 项目1:考虑静态工厂方法

  • 问题内容: 为什么有Java不允许覆盖静态方法?,它声称在Java中不允许覆盖静态方法。但这似乎在OpenJDK中有效: 在不使用时,可以编译这两个类,但在编译时会失败。要重现此文件,文件如下所示。 和这样的文件: 使用时,该错误是IS 当移除时,输出是所述的,方法。 javac是OpenJDK的版本。 错误在哪里?(理想情况是将其添加到静态方法中,但回答这是in的错误,或者我的想法也不错) 问题