Java Class Methods - Complete Guide
Introduction to Class Methods
Class methods, also known as member functions, define the operations or behaviors that objects of a class can perform.
They encapsulate functionality, operate on data (attributes), and enable interaction between objects and the external world.
Types of Methods in Java
Java supports different types of methods such as instance methods, static methods, overloaded methods, and more.
Example
public class MethodTypes {
private int counter = 0;
// Instance method
public void increment() {
counter++;
System.out.println("Counter: " + counter);
}
// Method with parameters and return
public int add(int a, int b) {
return a + b;
}
// Varargs method
public double average(int... numbers) {
if (numbers.length == 0) return 0;
int sum = 0;
for (int num : numbers) sum += num;
return (double) sum / numbers.length;
}
// Static method
public static String getClassName() {
return "MethodTypes";
}
// Final method
public final String getFinalMessage() {
return "This cannot be overridden";
}
// Private helper
private void resetCounter() {
counter = 0;
System.out.println("Counter reset");
}
// Using private method
public void resetAndIncrement() {
resetCounter();
increment();
}
// Overloaded methods
public void display(String msg) {
System.out.println("Message: " + msg);
}
public void display(String msg, int times) {
for (int i = 0; i < times; i++) {
System.out.println("Message " + (i + 1) + ": " + msg);
}
}
public static void main(String[] args) {
MethodTypes demo = new MethodTypes();
demo.increment();
demo.increment();
System.out.println("Sum: " + demo.add(5, 7));
System.out.println("Average: " + demo.average(10, 20, 30));
System.out.println("Class: " + MethodTypes.getClassName());
System.out.println(demo.getFinalMessage());
demo.resetAndIncrement();
demo.display("Hello");
demo.display("Java", 3);
}
}
Output
Counter: 1 Counter: 2 Sum: 12 Average: 20.0 Class: MethodTypes This cannot be overridden Counter reset Counter: 1 Message: Hello Message 1: Java Message 2: Java Message 3: Java
Method Parameters and Return Types
Methods can accept parameters and return values of various types. Java passes primitives by value and objects by reference value.
Example
public class MethodParameters {
public void modifyPrimitive(int x) {
x = x * 2;
System.out.println("Inside: " + x);
}
public void modifyObject(StringBuilder sb) {
sb.append(" World");
System.out.println("Inside: " + sb);
}
public void modifyArray(int[] arr) {
if (arr.length > 0) arr[0] = 999;
System.out.println("Inside arr[0]: " + arr[0]);
}
public int returnInt() { return 42; }
public String returnString() { return "Hello Java"; }
public boolean returnBoolean() { return true; }
public double returnDouble() { return 3.14; }
public int[] returnArray() { return new int[]{1,2,3}; }
public Person createPerson(String name, int age) {
return new Person(name, age);
}
public void printMessage(String msg) {
System.out.println("Message: " + msg);
}
public static void main(String[] args) {
MethodParameters demo = new MethodParameters();
int num = 10;
System.out.println("Before: " + num);
demo.modifyPrimitive(num);
System.out.println("After: " + num);
StringBuilder sb = new StringBuilder("Hello");
demo.modifyObject(sb);
System.out.println("After: " + sb);
int[] arr = {1,2,3};
demo.modifyArray(arr);
System.out.println("After arr[0]: " + arr[0]);
System.out.println("Int: " + demo.returnInt());
System.out.println("String: " + demo.returnString());
System.out.println("Boolean: " + demo.returnBoolean());
System.out.println("Double: " + demo.returnDouble());
System.out.println("Array: " + java.util.Arrays.toString(demo.returnArray()));
Person p = demo.createPerson("Alice", 30);
System.out.println("Person: " + p.getName() + ", " + p.getAge());
demo.printMessage("This is void");
}
}
class Person {
private String name;
private int age;
public Person(String n, int a) { name = n; age = a; }
public String getName() { return name; }
public int getAge() { return age; }
}
Output
Before: 10 Inside: 20 After: 10 Inside: Hello World After: Hello World Inside arr[0]: 999 After arr[0]: 999 Int: 42 String: Hello Java Boolean: true Double: 3.14 Array: [1, 2, 3] Person: Alice, 30 Message: This is void
Best Practices for Class Methods
- ✅ Use meaningful names (camelCase)
- ✅ Keep methods short and single-purpose
- ✅ Limit number of parameters
- ✅ Use method overloading only when it improves readability
- ✅ Document with Javadoc
- ✅ Use immutables when returning objects if possible
- ✅ Apply proper access modifiers
- ✅ Handle exceptions gracefully