Java:何时使用静态方法

发布于 2021-02-02 23:08:48

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

例如

Obj x = new Obj();
x.someMethod

要么

Obj.someMethod

(这是静态方式吗?)

我很困惑!

关注者
0
被浏览
77
1 个回答
  • 面试哥
    面试哥 2021-02-02
    为面试而生,有面试问题,就找面试哥。

    一个经验法则:问自己“即使尚未构建Obj,调用此方法是否有意义?” 如果是这样,那肯定是静态的。

    因此,在一个类中,Car你可能有一个double convertMpgToKpl(double mpg)静态的方法,因为即使没有人制造过汽车,也可能想知道35mpg转换为什么。但是void setMileage(double mpg)(设置一辆特定Car的效率)不能是静态的,因为在构造任何Car之前都无法调用该方法。

    (顺便说一句,情况并非总是如此:你有时可能有一个涉及两个Car对象的方法,但仍然希望它是静态的。例如Car theMoreEfficientOf( Car c1, Car c2 )。尽管可以将其转换为非静态版本,但有人会争论说,因为不是哪个Car更为重要的“特权”选择,你不应强迫调用者选择一个Car作为要在其上调用方法的对象。这种情况在所有静态方法中所占的比例很小,虽然。)



知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看