티스토리 뷰

Java

Java Anonymous Class

Kodong's blog 2026. 1. 22. 23:11

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>

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG more
«   2026/04   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30
글 보관함