A class defined within another class is called a nested class. Like other members of a class, a nested class can be declared static or not. A non-static nested class is called an inner class. An instance of an inner class can exist only within an instance of its enclosing class and has access to its enclosing class's members even if they are declared private.

The following table shows the types of nested classes:

Types of Nested Classes
Type Scope Inner
static nested class member no
inner [non-static] class member yes
local class local yes
anonymous class only the point where it is defined yes


Inner Named class
   class Outer {
    Outer() {
        Inner i = new Inner();
    // Inner class
    private class Inner {
        Inner() {}
        public void innerMethod() {
            // Do something.
View of Codes Snippets:

Calling inner class

Complete Codes :
import javax.swing.JOptionPane;
public class ClassTemplate1 {
public ClassTemplate1() {
// TODO Auto-generated constructor stub		
public static void main(String[] args) 
		throws Exception {
// TODO Auto-generated method stub
Process pp = new Process();
	// can't instantiate abstract class
try {
  } catch (NumberFormatException exc) { 
}// end of class template 
//outer class
class Process
public Process() { 
System.out.println("Process outer constructor");
public void read_line()
System.out.println("Reading Process outer class :");
Inner in = new Inner();
  private class Inner //class inner named
     public Inner() { 
   System.out.println("Process inner constructor");}
     private void rea_inner()
       System.out.println("Process inner reader");