1. What is inner class and when we should go for inner classes?
Some times we can declare a class inside another class such type of classes are called inner classes
Example
Class Car{
//more code here
Class Engine{
//more code here
}
}
Without existing Car object there is no chance of existing Engine object, hence Engine class has declared inside Car class.
2.How many types of inner classes are present?
There are four types of inner classes are present
- Normal or regular inner class
- Method local inner class
- Anonymous inner class
- Static nested class
3.What is method local inner class?
- Sometimes we can declare a class inside a method such type of classes are called method local inner classes
- The main purpose of method local inner classes is to define method specific functionality
The scope of method local inner classes is the scope of the method where it is declared.
- This is the mostly rarely used type of inner classes.
Example
class Test{
public void m1(){
class Inner {
public void sum(int I,int j){
System.out.println(i+J);
}//sum
}//inner
Inner i=new Inner();
i.sum(10,20);
//more code here
I.sum(100,303);
//more code here
i.sum(102,84);
}//m1()
Public static void main(){
New Test().m1();
}
}
4.What is anonymous inner class?
- Some times we can declare a inner class without name such type of inner classes are called anonymous inner classes
- Anonymous inner classes can be divided into 3 categories
- Anonymous inner class that extends a class
- Anonymous inner class that implements an interface
- Anonymous inner class that defines inside a method argument
ANONYMOUS INNER CLASS THAT EXTENDS A CLASS
Example
Class popcorn{
Public void taste(){
System.out.println(“it is salty”);
}
//more code here
}
Class Test{
Public static void main(String[] args)
{
Popcorn p=new Popcorn()
{ // here we are creating child class for popcorn
Public void taste(){
System.out.println(“it is sweet”);
}
};//here semicolon indicates we r creating child class object with parent
// class reference here child class dosent contain name
p.taste()// it is sweet
Popcorn p=new Popcorn();
p1.taste() //it is salty
}
}
ANONYMOUS INNER CLASS THAT IMPLEMENTS AN INTERFACE
example
class Test{
Public static void main(String[] args){
Runnable r=new Runnable(){
Public void run(){
for(int i=0;i<10;i++){
System.out.printin(“child thread”);
}
}
};
Thread t=new Thread(r);
t.start();
for(int i=0;i<10;i++){
System.out.printin(“main thread”);
}
}
}
Don’t become fool that here we are creating object of interface Runnable.Here we are actually
creating an object of class that is implemented Runnable interface.
ANONYMOUS INNER CLASS THAT DEFINES INSIDE A METHOD ARGUMENT
Example
Class Test{
Public static void main(String[] args){
New Thread(new Runnable()
{
Public void run(){
for(int i=0;i<10;i++){
System.out.printin(“child thread”);
}
}
}).start();
for(int i=0;i<10;i++){
System.out.printin(“main thread”);
}
}//main
}//Test
5. With out having name of class how we can create an object and utilize the functionality of Anonymous inner class?
By using parent class names
6. What is difference between anonymous inner class and general class?
- A general class can extend only one class at a time of course inner class can extend only one class at a Time.
- A general class can implement any no of interfaces at a time but a anonymous inner class can
- implement only one interface at a time
- A general class can extend a class and can implement an interface simultaneously but an
anonymous inner class can extend a class or can implement an interface one at a time but not
both simualtaneously
7. What is difference between normal inner class and static nested class?
Normal Inner Class | Static Nested Class |
|
|
|
|
|
|
|
|
8.What is static nested calss?why the term nested instead of inner in static nested class?
Some times we can declare inner class with static modifier such type of inner class are called static
nested classes.the term nested instead of static because without existing outer class object inner
class object can exist.
Example
Class outer{
Static class Nested{
Public static void main(String[] args){
System.out.println(“nested class main()”);
}
}
Public static void main(String[] args){
System.out.println(“outer class main()”);
}
}
- Java Outer
O/P
Outer class main()
- Java Outer$Nested
O/P
Nested class main()
9. Inside inner class is it possible to declare main()?
No it is not possible to declare main () inside inner class but in static nested class it is possible for
Example refer above code
Υοur style is unique compared to othеr people I've read stuff from.
ReplyDeleteManу thanks for рosting when you've got the opρortunіty,
Guеѕs I will јust bοoκmark this pagе.
Also visit my wеb blog :: http://www.bofigo.com/philips-avent-gogus-kalkani-2-li-urun11502.html ()