Saturday, August 13, 2011

Java Inner Class

/*
*
*
*/
package com.blx.learn.java.core.innerclass;

/**
* This is an example Java Inner class which demonstrate various Inner classes
* available
*
* @author Nanjundan Chinnasamy
* @version 1.0
*
*/
public class LearnInnerClass {

/**
* This is a sample Member Inner class defined inside a class
*
* This inner class is instance specific to the outer class
* (LearnInnerClass). Object can be created for this class using Outer class
* object.
*
* @author Nanjundan Chinnasamy
* @version 1.0
*/
class MemberInnerClass {

/**
* Member class method
*/
public void testMethod() {
System.out.println("This is member class testMethod method");
}

/**
* Static class method
*/
public void memberlassMthd() {
// To access member class method
this.testMethod();
// To access outer class method
LearnInnerClass.this.testMethod();
}
}

/**
* This is a sample Static Member Inner class defined inside a class. Member
* class defined as static. Like other static methods, member class has
* access to all.
*
* @author Nanjundan Chinnasamy
* @version 1.0
*
*/
static class StaticMemberInnerClass {

/**
* Static class method
*/
public void testMethod() {
System.out.println("This is static class testMethod method");
}

/**
* Static class method
*/
public void staticMemClassMthd() {
this.testMethod();
}

}

/**
* Method to testMethod local Inner class
*/
void localClassMethod() {

/**
* This is local class exists inside the method. This can be reference
* only within this method.
*
* @author Nanjundan Chinnasamy
* @version 1.0
*
*/
class LocalInnerClass {
public void testMethod() {
System.out.println("This is local class testMethod mthod.");
}
}
// To access local class methods
new LocalInnerClass().testMethod();
// To access outer class methods
testMethod();

}

/**
* Method to testMethod anonymous inner class
*
*/
void anonymousClassMethod() {

/**
* Anonymous Inner class declared inside a method without any name. JVM
* will create its own name during the compile time.
*
* Such implementation might required the places where to create an
* object instances w/o creating sub class and override their methods
*
* @author Nanjundan Chinnasamy
*
* @version 1.0
*/
Runnable runnable = new Runnable() {
@Override
public void run() {
System.out.println("This is anonymous inner class");
}
};
Thread thread = new Thread(runnable);
thread.run();
}

/**
* This is an out class testMethod method
*/
void testMethod() {
System.out.println("I am outer class testMethod method");
}

/**
* @param args
*/
public static void main(String[] args) {

// This is for static member class
LearnInnerClass.StaticMemberInnerClass staticMemberInnerClass = new StaticMemberInnerClass();
staticMemberInnerClass.staticMemClassMthd();

// This is for member class
MemberInnerClass memberInnerClass = new LearnInnerClass().new MemberInnerClass();
memberInnerClass.testMethod();

// This is for Local Inner class
LearnInnerClass outerClassForLocInnTst = new LearnInnerClass();
outerClassForLocInnTst.localClassMethod();

// This is for anonymous inner class
LearnInnerClass outerClassForAnomysClassTst = new LearnInnerClass();
outerClassForAnomysClassTst.anonymousClassMethod();

}

}


Output:
This is static class testMethod method
This is member class testMethod method
This is local class testMethod mthod.
I am outer class testMethod method
This is anonymous inner class

Pega Decisioning Consultant - Mission Test Quiz & Answers

The Pega Certified Decisioning Consultant (PCDC) certification is for professionals participating in the design and development of a Pega ...