Tuesday, 9 July 2019

inner classes

inner class:



We can have two types of inner classes:  static inner classes and non-static inner classes

non-static inner classes requires initialization of outer class.

Whereas, static inner class doesn’t require initialization of outer class.

Note: We can not declare an outer class static. We can only use static keyword with inner classes.



Benefit of static inner classes:
static inner class doesn’t contain a reference of outer class. So, on screen rotation [In Mobile device, like Android], it doesn’t create m/m leak. While non-static inner class contains reference of outer class and can cause m/m leak.




Lets learn how to instantiate static and non-static inner classes:

Instantiation of static class:

public class OuterClass{

     public OuterClass(){

     }

    static class InnerClass{
     
          public void check(){

          }

    }

}


public class OuterInnerDemo{

       public static void main(String[] args){
     
               OuterClass.InnerClass nestedObject = new  OuterClass.InnerClass();
               nestedObject.check();

       }

}



Instantiation of non-static class:

public class OuterClass{

     public OuterClass(){
  
     }

    class InnerClass{
       
          public void check(){

          }

    }

}


public class OuterInnerDemo{

       public static void main(String[] args){
        
               OuterClass outer = new OuterClass();
               OuterClass.InnerClass nonStaticObject =  outer.new  InnerClass();
               nonStaticObject.check();

       }

}




Please leave a comment, if this post is really helpful.

Thanks

No comments:

Post a Comment