Java:何时使用静态方法我想知道何时使用静态方法?假设我有一个带有几个getter和setter的类,一个或两个方法,我希望这些方法只能在类的实例对象上调用。这是否意味着我应该使用静态方法?例如Obj x = new Obj();x.someMethod要么Obj.someMethod(这是静态方式吗?)我很困惑!
4 回答
收到一只叮咚
TA贡献1821条经验 获得超4个赞
一个经验法则:问问自己“即使没有构建Obj,这个方法也有意义吗?” 如果是这样,那肯定是静态的。
所以在一个类中Car
你可能有一个double convertMpgToKpl(double mpg)
静态的方法,因为人们可能想知道35mpg转换成什么,即使没有人建造过汽车。但是void setMileage(double mpg)
(设置一个特定Car的效率)不能是静态的,因为在构建任何Car之前调用该方法是不可思议的。
(顺便说一下,反过来并不总是这样:你有时可能有一个涉及两个Car
对象的方法,但仍然希望它是静态的。例如Car theMoreEfficientOf( Car c1, Car c2 )
。虽然这可以转换为非静态版本,但有些人会认为,因为那里不是一个“特权”选择,其中Car更重要,你不应该强迫调用者选择一个Car作为你将调用方法的对象。这种情况只占所有静态方法的一小部分,虽然。)
慕容森
TA贡献1853条经验 获得超18个赞
仅在以下方案中定义静态方法:
如果您正在编写实用程序类,则不应更改它们。
如果方法未使用任何实例变量。
如果任何操作不依赖于实例创建。
如果有一些代码可以被所有实例方法轻松共享,请将该代码提取到静态方法中。
如果您确定永远不会更改或覆盖方法的定义。由于静态方法无法被覆盖。
添加回答
举报
0/150
提交
取消