Java Means Durgasoft: DURGA SOFTWARE SOLUTIONS, 202 HUDA Maitrivanam, Ameerpet, Hyd. PH: 040-64512786
Java Means Durgasoft: DURGA SOFTWARE SOLUTIONS, 202 HUDA Maitrivanam, Ameerpet, Hyd. PH: 040-64512786
DURGA SOFTWARE SOLUTIONS ,202 HUDA Maitrivanam, Ameerpet , Hyd. Ph: 040-64512786 Page
1
JAVA Means DURGASOFT
Inner Classes
Declaring a class inside a class is called as an Inner Class.
In Java applications,Inner classes are able to provide the following Advantages.
1.Modularity
2.Abstraction
3.Share-ability
4.Security
5.ReUseAbility
1.Modularity:
If we declare an Inner class inside a class then that inner class is treated as a
module of that entity class.
Ex:
class Account{
classStudentAccount{
classEmployeeAccount{
classLoanAccount{
DURGA SOFTWARE SOLUTIONS ,202 HUDA Maitrivanam, Ameerpet , Hyd. Ph: 040-64512786 Page
2
JAVA Means DURGASOFT
2.Abstraction:
If we declare any variable or method inside an inner class then that variable and
method will have scope upto the respective inner class only,which are not available
to outside of that inner class.
3.Security:
4.Share-ability:
5.ReUseAbility:
DURGA SOFTWARE SOLUTIONS ,202 HUDA Maitrivanam, Ameerpet , Hyd. Ph: 040-64512786 Page
3
JAVA Means DURGASOFT
class Outer{
class Inner{
----
----
DURGA SOFTWARE SOLUTIONS ,202 HUDA Maitrivanam, Ameerpet , Hyd. Ph: 040-64512786 Page
4
JAVA Means DURGASOFT
Outer.Innerref_Var=new Outer.newInner();
In the case of member Inner classes,by using outer class reference variable we are
able to access only outer class members,it is not possible to access inner class
members.
In the case of member Inner classes by using Inner class reference variables we are
able to access only inner class members,it is not possible to access outer class
members.
In the case of member inner classes,all the outer class members are available to
inner classes automatically but all the inner class members are not available to outer
classes.
In general,inner classes are not allowing static declarations,but inner classes are able
to allow 'static' keyword along with 'final' keyword.
class A{
int i=10;
void m3(){
System.out.println("m3-A");
//System.out.println(j);---->error
DURGA SOFTWARE SOLUTIONS ,202 HUDA Maitrivanam, Ameerpet , Hyd. Ph: 040-64512786 Page
5
JAVA Means DURGASOFT
class B{
int j=20;
void m1(){
System.out.println("m1-B");
System.out.println(i);
void m2(){
System.out.println("m2-B");
class Test{
ab.m1();
ab.m2();
//ab.m3();--->error
A a=new A();
a.m3();
//a.m1();--->error
//a.m2();--->error
In the case of member inner classes,we are able to define inheritance relation in the
following cases:
DURGA SOFTWARE SOLUTIONS ,202 HUDA Maitrivanam, Ameerpet , Hyd. Ph: 040-64512786 Page
6
JAVA Means DURGASOFT
Diagram(OOPS--INNERCLASSES1.png)
class A{
interface I{
void m1();
void m2();
class B implements I{
System.out.println("m1-B");
System.out.println("m2-B");
DURGA SOFTWARE SOLUTIONS ,202 HUDA Maitrivanam, Ameerpet , Hyd. Ph: 040-64512786 Page
7
JAVA Means DURGASOFT
class Test{
ai.m1();
ai.m2();
class Outer{
If we want to access the members of static inner classes then we have to create
object for the static inner class.
Outer.Innerref_Var=new Outer.Inner();
In general inner classes will allow all the members of outer classes directly but static
inner classes are able to allow only static members of the outer class,it will not allow
non-static members of the outer class.
DURGA SOFTWARE SOLUTIONS ,202 HUDA Maitrivanam, Ameerpet , Hyd. Ph: 040-64512786 Page
8
JAVA Means DURGASOFT
In general,inner classes will not allow static declarations but static inner classes are
able to allow the static declarations.
class A{
int i=10;
staticint j=10;
static class B{
void m1(){
System.out.println("m1-B");
//System.out.println(i);---->error
System.out.println(j);
void m2(){
System.out.println("m2-B");
System.out.println("m3-B");
DURGA SOFTWARE SOLUTIONS ,202 HUDA Maitrivanam, Ameerpet , Hyd. Ph: 040-64512786 Page
9
JAVA Means DURGASOFT
class Test{
ab.m1();
ab.m2();
A.B.m3();
interface I{
class A{
void m1(){
System.out.println("m1-A");
void m2(){
System.out.println("m2-A");
}}}
class Test{
DURGA SOFTWARE SOLUTIONS ,202 HUDA Maitrivanam, Ameerpet , Hyd. Ph: 040-64512786 Page
10
JAVA Means DURGASOFT
ia.m1();
ia.m2();
class A{
void m1(){
class B{
void m2(){
System.out.println("m2-B");
void m3(){
DURGA SOFTWARE SOLUTIONS ,202 HUDA Maitrivanam, Ameerpet , Hyd. Ph: 040-64512786 Page
11
JAVA Means DURGASOFT
System.out.println("m3-B");
B b=new B();
b.m2();
b.m3();
class Test{
A a=new A();
a.m1();
}}
In general,in Java applications,if we declare any abstract class with abstract methods
then we have to take a sub class for the abstract class,where we have to provide
implementation for all the abstract methods.
In the case of interfaces,we have to take an implementation class and we have to
provide implementation for all the abstract methods declared in the interface.
In the above two cases,subclasses or implementation classes may allow their own
methods and if we create object for sub class or implementation class then that
object may have the respective sub class identity or implementation class identity.
DURGA SOFTWARE SOLUTIONS ,202 HUDA Maitrivanam, Ameerpet , Hyd. Ph: 040-64512786 Page
12
JAVA Means DURGASOFT
Syntax:
---abstract methods---------
class Outer{
};
interface I{
void m1();
void m2();
class A{
I i=new I(){
DURGA SOFTWARE SOLUTIONS ,202 HUDA Maitrivanam, Ameerpet , Hyd. Ph: 040-64512786 Page
13
JAVA Means DURGASOFT
System.out.println("m1-A");
System.out.println("m2-A");
};
class Test{
A a=new A();
a.i.m1();
a.i.m2();
DURGA SOFTWARE SOLUTIONS ,202 HUDA Maitrivanam, Ameerpet , Hyd. Ph: 040-64512786 Page
14
JAVA Means DURGASOFT
abstract class A{
void m1(){
System.out.println("m1-A");
class B{
A a=new A(){
void m2(){
System.out.println("m2-AIC");
void m3(){
System.out.println("m3-AIC");
};
DURGA SOFTWARE SOLUTIONS ,202 HUDA Maitrivanam, Ameerpet , Hyd. Ph: 040-64512786 Page
15
JAVA Means DURGASOFT
class Test{
B b=new B();
b.a.m1();
b.a.m2();
b.a.m3();
Ex:
MyFrame(){
this.addWindowListener(new WindowAdapter(){
System.exit(0);
DURGA SOFTWARE SOLUTIONS ,202 HUDA Maitrivanam, Ameerpet , Hyd. Ph: 040-64512786 Page
16
JAVA Means DURGASOFT
});
}}
interface I{
void m1();
class B{
System.out.println("m2-B");
i.m1();
class Test{
B b=new B();
b.m2(new I()
System.out.println("m1-AIC");
});
}}}}
DURGA SOFTWARE SOLUTIONS ,202 HUDA Maitrivanam, Ameerpet , Hyd. Ph: 040-64512786 Page
17
JAVA Means DURGASOFT
DURGA SOFTWARE SOLUTIONS ,202 HUDA Maitrivanam, Ameerpet , Hyd. Ph: 040-64512786 Page
18