我想知道什么时候使用静态方法?假设我有一个类,有几个getter和setter,一个或两个方法,我希望这些方法只能在类的实例对象上调用。这是否意味着我应该使用静态方法?
例子:
Obj x = new Obj();
x.someMethod();
或:
Obj.someMethod(); // Is this the static way?
我很困惑!
我想知道什么时候使用静态方法?假设我有一个类,有几个getter和setter,一个或两个方法,我希望这些方法只能在类的实例对象上调用。这是否意味着我应该使用静态方法?
例子:
Obj x = new Obj();
x.someMethod();
或:
Obj.someMethod(); // Is this the static way?
我很困惑!
当前回答
静态方法是Java中可以在不创建类对象的情况下调用的方法。它属于这个阶级。
当我们不需要使用实例调用方法时,我们使用静态方法。
其他回答
java中的静态方法属于类(而不是类的实例)。它们不使用实例变量,通常从参数中获取输入,对其执行操作,然后返回一些结果。实例方法与对象相关联,并且,顾名思义,可以使用实例变量。
静态的: Obj.someMethod
当你想要提供对方法的类级访问时,使用static,即在没有类实例的情况下,方法应该是可调用的。
你应该在任何时候使用静态方法,
方法中的代码不依赖于实例创建,而是依赖于实例创建 不使用任何实例变量。 特定的一段代码将由所有实例方法共享。 不应更改或重写方法的定义。 您正在编写不应该更改的实用程序类。
https://www.tutorialspoint.com/When-to-use-static-methods-in-Java
静态方法是Java中可以在不创建类对象的情况下调用的方法。它属于这个阶级。
当我们不需要使用实例调用方法时,我们使用静态方法。
一个经验法则:问问自己“即使还没有构造对象,调用这个方法有意义吗?”如果是这样,它肯定是静态的。
在Car类中,你可能有一个方法:
double convertMpgToKpl(double mpg)
...这将是静态的,因为有人可能想知道35英里/加仑转换成什么,即使没有人制造过汽车。但是这个方法(设置一个特定Car的效率):
void setMileage(double mpg)
...不能是静态的,因为在构造任何Car之前调用该方法是不可想象的。
(顺便说一下,相反的情况并不总是正确的:你可能有时有一个方法涉及两个Car对象,但仍然希望它是静态的。例如:
Car theMoreEfficientOf(Car c1, Car c2)
虽然这可以转换为非静态版本,但有些人会认为,由于没有“特权”选择哪个Car更重要,所以不应该强迫调用者选择一个Car作为调用方法的对象。不过,这种情况在所有静态方法中只占相当小的一部分。