🧩 When Should a Method Be static
?
✅ Use static
when:
- The method does not depend on instance variables or objects
- It performs a utility or helper operation
- You want to call it without creating an object
- It’s logically tied to the class itself, not to any specific object
🧪 Examples of static method usage:
public class MathUtils {
public static int square(int x) {
return x * x;
}
}
int result = MathUtils.square(5); // No object needed
📌 Real Use Cases:
- Utility libraries (e.g.,
Math.sqrt()
,Collections.sort()
) - Main method:
public static void main(String[] args)
- Factory methods that return instances
- Common functions like validation or formatting
🧩 When Should a Method Be non-static
?
✅ Use non-static (instance) methods when:
- The method needs to access instance variables
- Behavior depends on the state of an object
- You need polymorphism (overriding in subclasses)
- Each object may behave differently
🧪 Examples of non-static method usage:
public class Car {
private String model;
public Car(String model) {
this.model = model;
}
public void startEngine() {
System.out.println(model + " engine started.");
}
}
Car car = new Car("Honda");
car.startEngine(); // Depends on object's model
📌 Real Use Cases:
- Accessing or modifying instance data
- Representing behavior of real-world objects
- Overriding methods in inheritance hierarchies
⚖️ Comparison Table
Feature | static Method | non-static Method |
---|---|---|
Belongs to | Class | Object |
Can access instance vars? | ❌ No | ✅ Yes |
Needs object to call? | ❌ No | ✅ Yes |
Used in inheritance? | ❌ Cannot override | ✅ Can override |
Example | Math.max(10, 20) | car.getSpeed() |
🧠 Interview-Ready Summary
Use static when the method works independently of object state.
Use non-static when behavior depends on or modifies instance-specific data.