Anonymous classes

 It is an inner class without a name and for which only a single object is created. An anonymous inner class can be useful when making an instance of an object with certain “extras” such as overloading methods of a class or interface, without having to actually subclass a class.

package com.company.bean;

public class A {
public void show(){
System.out.println("class A");
}
}
package com.company.bean;

public class B extends A{
public void show(){
System.out.println("class B");
}
}
package com.company;

import com.company.bean.A;

public class Main {

public static void main(String[] args) {
A obj = new A(){
public void show(){
System.out.println("mutant");
}
};
obj.show();
System.out.println(obj.getClass().getName());
}
}
Outcome:
mutant
com.company.Main$1

*It is also possible for Interface and Abstract clesses.
Example:
package com.company.bean;

public interface Test {
int a = 29;
void getAge();
}
package com.company.bean;

public abstract class Car {

public void speed(){
System.out.println("Speed");
}
}
package com.company;

import com.company.bean.Car;
import com.company.bean.Test;

public class Main {

public static void main(String[] args) {
Test t = new Test() {
@Override
public void getAge() {
System.out.println("Age is " + a);
}
};
t.getAge();
System.out.println(t.getClass().getName());

Car c = new Car() {
@Override
public void speed() {
super.speed();
}
};
c.speed();
System.out.println(c.getClass().getName());
}
}
Outcome:
Age is 29
com.company.Main$1
Speed
com.company.Main$2

As we see everytime anonymous class is being created automatically. I suggest You to go into 
out->production: here we can easily find anonymous class, and if we examine this class we can 
detect inside it: Inner class is written!

Комментарии

Популярные сообщения из этого блога

Lesson1: JDK, JVM, JRE

SE_21_Lesson_11: Inheritance, Polymorphism

SE_21_Lesson_9: Initialization Blocks, Wrapper types, String class