티스토리 뷰
What is Java Anonymous Class?
An anonymous class is a class without a name. It is created and used at the same time.
You often use anonymous classes to override methods of an existing class or interface,
without writing a separate class with extends or implement keyword.
When to Use Anonymous Classes?
Use anonymous classes when you need to create a short class for one-time use. For example:
- Overriding a method without creating a new subclass
- Implementing an interface quickly
- Passing small pieces of behavior as objects
Here is two example, first one uses extends keyword, second one uses implements keyword.
// ex1 - normal class
class Animal {
void say() {
System.out.println("Animal says!");
}
void move() {
System.out.println("Animal moves!");
}
}
class Main {
public static void main(String[] args) {
// Anonymous class that extends Animal
Animal animal = new Animal() {
@Override
void say() {
System.out.println("Anonymous class says!");
}
@Override
void move() {
System.out.println("Anonymous class moves!");
}
};
animal.say();
animal.move();
}
}
Result ↓)
Anonymous class says!
Anonymous class moves!
The above code can be used instead of the following code,
class Animal {
void say() {
System.out.println("Animal says!");
}
void move() {
System.out.println("Animal moves!");
}
}
class AnimalSubClass extends Animal {
@Override
void say() {
System.out.println("AnimalSubClass says!");
}
@Override
void move() {
System.out.println("AnimalSubClass moves!");
}
}
class Main {
public static void main(String[] args) {
AnimalSubClass animalSubClass = new AnimalSubClass();
animalSubClass.say();
animalSubClass.move();
}
}
Result ↓)
AnimalSubClass says!
AnimalSubClass moves!
In other words, we can use Anonymous class, without make other subclass.
I think we should use this only when we need some class for one-time use.
Or you can use Anonymous class with not storing it.
// ex1 - normal class
class Animal {
void say() {
System.out.println("Animal says!");
}
}
class Tmp2 {
public static void main(String[] args) {
// Anonymous class that extends Animal
new Animal() {
@Override
void say() {
System.out.println("Anonymous class says!");
}
}.say();
}
}
Right after creating Anonymous class, we can invoke Overrided method("say()")!
// ex2 - interface
interface Greeting {
void sayHello();
void sayHi();
}
class Main {
public static void main(String[] args) {
// Anonymous class that implements Greeting
Greeting greeting = new Greeting() {
@Override
public void sayHello() {
System.out.println("Hello!");
}
@Override
public void sayHi() {
System.out.println("Hi!");
}
};
greeting.sayHello();
greeting.sayHi();
}
}
Result ↓)
Hello!
Hi!
<END>
'Java' 카테고리의 다른 글
| 자바 - 변수가 메모리에 할당되는 순간 및 primitive 타입 8개의 내가 몰랐던 (또는 애매하게 알고 있었던) 부분 정리 (0) | 2026.02.26 |
|---|---|
| A Pointer for understanding the difference of Primitive Data and Reference Data (0) | 2026.02.11 |
| Java - What is Inner Class, Outer Class (0) | 2026.01.07 |
| 자바 - JVM, Javac, JDK (0) | 2025.12.09 |
| 인텔리제이 글자 크기 확대/축소 단축기 설정 ( ctrl + +, ctrl + - ) (0) | 2025.12.01 |