Inner Class

Inner Class:

If one class with in another class is known as inner class or nested class
Syntax:
class classname   — outer class
{
    class classname.   — inner class
    {
    ...
    ...
    }
...
...
...
}

The main aim of the inner class is to provide more security for the data

Example
class A
{
Int x;
    private class B
    {
    int y;
    float z;
        void f1()
        {
        ...
        ...
        }
...
...
}
}
In the above example y,z,f1() are acting as a private properties.

Accessing inner class properties:


1.outer class property can be access with in the inner class directly.
2.inner class properties can be accesses inside the outer class methods with object reference
3.properties of non-static innerclass can be accessed by creating a special object in the external class(Main class) as shown below

Outerclass.innerclass objref=new outerclass().new innerclass();


4.whenever we want to access static inner class property within external class then we must create a spacial object as shown below

Outerclass.innerclass objref=new outerclass.innerclass()


Write a java program to illustrate innerclass 


class A
{
	int x=10;
	void f1()
	{
		System.out.println("this if f1 method");
	}
	void f2()
	{
		B ob=new B();
		ob.f4();
	}
	class B
	{
		int y=30;
		void f3()
		{
			System.out.println("x="+x);
			f1();
		}
		void f4()
		{
			System.out.println("this is  f4 method");
		}
	
	};
	static class C
	{
		void f5()
		{
			System.out.println("this is f5 method");
		}
	}
};
public class Rain {

	public static void main(String[] args)  {
		
    	A oa=new A();
    	oa.f2();
    	A.B ob=new A().new B();// non static inner class object
    	ob.f3();
    	A.C oc=new A.C(); // static inner class object
    	oc.f5();
    	
	}
}



output:
	this is  f4 method
	x=10
	this if f1 method
	this is f5 method

Note:
Outer class or external class cont be declare either static or final class.