Saturday, October 6, 2012
Difference between static and non static nested class in Java - Inner class
Static vs non Static class in Java
In Java you can make a class either static or non static. Now what is difference between making a class static vs non static? well there is lot of difference between them. First of all there are two kinds of class in Java, one is called top level class and other is called nested class. As name suggested top level class is a class which is declared in .java file and not enclosed under any other class. On other hand nested class is declared inside another class. The class which enclosed nested class is known as Outer class. Now let's come back to static vs non static class. In Java programming language you can not make a top level class static. You can only make nested class either static or non static. If you make a nested class non static then it also referred as Inner class. Now let's come to the point regarding Difference between static and non static nested class in Java
1) Nested static class doesn't need reference of Outer class but non static nested class or Inner class requires Outer class reference. You can not create instance of Inner class without creating instance of Outer class. This is by far most important thing to consider while making a nested class static or non static.
2) static class is actually static member of class and can be used in static context e.g. static method or static block of Outer class.
3) Another difference between static and non static nested class is that you can not access non static members e.g. method and field into nested static class directly. If you do you will get error like "non static member can not be used in static context". While Inner class can access both static and non static member of Outer class.
here is the code sample of using both nested static class vs non static class :
That's all on Difference between Static and non Static nested class in Java. So far we have only touched member Inner class and not discussed other two types on Inner class e.g. Local class and Anonymous Inner class. In this Java tutorial we have seen What is nested static class in Java and How to create instance of both nested static and non static class in Java.
In summary its easy to create instance of nested static class as it doesn't require instance of Outer class while non static nested class e.g. Inner class will always need an Outer class instance and can not exist without Outer class. If you have to choose between static vs non static class than prefer static nested class if you can use that.
Other Java programming tutorial from java67 blog