1. Use static to declare an inner class that can be called directly outside the
classouter{//defining an external class    Private StaticString info = "Hello world";//define private properties of an external class    Static classinner{//using static to define an inner class as an outer class         Public voidPrint () {//methods for defining inner classesSYSTEM.OUT.PRINTLN (info);//direct access to private properties of external classes        }    };  Public voidFun () {//methods for defining external classes        NewInner (). print ();//invoking a method by instantiating an object from an inner class    }}; Public classinnerclassdemo03{ Public Static voidMain (String args[]) {NewOuter.Inner (). print (); }};
2. Do not use static to declare an inner class so that external calls
classouter{//defining an external class    PrivateString info = "Hello world";//define private properties of an external class    classinner{//Defining inner Classes         Public voidPrint () {//methods for defining inner classesSYSTEM.OUT.PRINTLN (info);//direct access to private properties of external classes        }    };  Public voidFun () {//methods for defining external classes        NewInner (). print ();//invoking a method by instantiating an object from an inner class    }}; Public classinnerclassdemo04{ Public Static voidMain (String args[]) {Outer out=NewOuter ();//External Class Instantiation ObjectOuter.Inner in = out.NewInner ();//instantiating an inner class objectIn.print ();//methods for calling inner classes    }};
3. Define the inner class in the method so that the external call
classouter{//defining an external class    PrivateString info = "Hello world";//define private properties of an external class     Public voidFunFinal intTemp) {//methods for defining external classes        classinner{//inner classes defined in the method             Public voidPrint () {//methods for defining inner classesSystem.out.println ("Properties in class:" + info);//direct access to private properties of external classesSYSTEM.OUT.PRINTLN ("Parameters in method:" +temp);        }        }; NewInner (). print ();//invoking a method by instantiating an object from an inner class    }}; Public classinnerclassdemo05{ Public Static voidMain (String args[]) {NewOuter (). Fun (30);//methods for calling external classes    }};
Java internal classes and external classes