Difference between static and non-static method in Java
UPDATED: 29 May 2015
Tags:
J2SE
There is significant difference between static and non-static methods in Java. We'll understand each difference with example.
Accessing static and non-static methods
- static method can be accessed without creating instance of class. It is attached with class itself.
- To access non-static method you have to create instance of class.
public class ExampleStaticMethod { /* static method `add` */ public static int add(int x, int y){ return x + y; } /* non-static method `subtract` */ public int subtract(int x, int y){ return x - y; } public static void main(String[] args) { int x = 10; int y = 20; /* Accessing static method without creating instance */ System.out.println("Addition: "+ add(x, y)); /* Accessing non-static method */ ExampleStaticMethod objExampleStaticMethod = new ExampleStaticMethod(); System.out.println("Subtraction: "+ objExampleStaticMethod.subtract(x, y)); } }
Accessing variables in static and non-static methods
- You can't access non static variables inside static methods.
- You can access static and non-static variables inside non-static methods.
public class ExampleStaticMethod { public int k = 40; public static int z = 30; /* static method `add` */ public static int add(int x, int y){ /* You can access `z` but you can't access `k` */ return x + y + z; } /* non-static method `subtract` */ public int subtract(int x, int y){ /* You can access `z` and `k` */ return x - y - z - k; } public static void main(String[] args) { int x = 10; int y = 20; /* Accessing static method without creating instance */ System.out.println("Addition: "+ add(x, y)); /* Accessing non-static method */ ExampleStaticMethod objExampleStaticMethod = new ExampleStaticMethod(); System.out.println("Subtraction: "+ objExampleStaticMethod.subtract(x, y)); } }
Method Override
- You can't @Override static methods.
- You can @Override non-static methods.
public class ExampleStaticMethod2 extends ExampleStaticMethod{ /** * Can't Override static method `add` * Exception in thread "main" java.lang.Error: Unresolved compilation problem: * The method add(int, int) of type ExampleStaticMethod2 must override or implement a supertype method */ //@Override //public static int add(int x, int y){ // return x + y; //} /** * Can't Override static method `add` * Exception in thread "main" java.lang.Error: Unresolved compilation problem: * Cannot make a static reference to the non-static method add(int, int) from the type ExampleStaticMethod2 */ //@Override //public int add(int x, int y){ // return x + y; //} /* Override non-static method `subtract` */ @Override public int subtract(int x, int y){ return x - y; } }
Method Overload
- static and non-static methods have same behavior for method overloading.
Tags:
J2SE
0 comments :