πŸ› οΈBackend/β˜•Java

[Java] 읡λͺ… 클래슀(Anonymous Class)

junbin2 2025. 5. 22. 18:38

βœ… 1. 읡λͺ… ν΄λž˜μŠ€λž€?

  • "읡λͺ…" + "클래슀" 이름이 μ—†λŠ” 클래슀λ₯Ό μ˜λ―Έν•œλ‹€.
  • μΌνšŒμ„±μœΌλ‘œ 1개의 객체λ₯Ό μƒμ„±ν•˜κΈ° μœ„ν•œ 클래슀이며, 읡λͺ… 클래슀 μ •μ˜μ™€ λ™μ‹œμ— 객체λ₯Ό 생성할 수 μžˆλ‹€.

βœ… 1. 읡λͺ… 클래슀 μ‚¬μš© 방법

// λΆ€λͺ¨ 클래슀
class Animal {
    public void sound() {
        System.out.println("λ™λ¬Όμ†Œλ¦¬");
    }
}

public class Main {
    public static void main(String[] args) {
        Animal dog = new Animal() {
            @Override
            public void sound() {
                Systme.out.println("κ°•μ•„μ§€ μ†Œλ¦¬");
            }
        };
        dog.bark();
    }
}
  • 읡λͺ…ν΄λž˜μŠ€λ‘œ λ§Œλ“€κ²Œ 되면, 읡λͺ…μ˜ μžμ‹ ν΄λž˜μŠ€κ°€ λ§Œλ“€μ–΄μ§€κ²Œ λœλ‹€. 즉, μ˜€λ²„λΌμ΄λ”©μ„ 톡해 μž¬μ •μ˜λ₯Ό ν•˜κΈ° μœ„ν•΄ μ‚¬μš©μ„ν•œλ‹€.
  • λ§Œμ•½ μž¬μ •μ˜λ₯Ό ν•˜μ§€ μ•ŠλŠ” κ²½μš°μ—λ„ λ©”μ„œλ“œ 호좜이 κ°€λŠ₯ν•˜λ©°, μ΄λŠ” 상속과 같은 κ°œλ…μ΄λ‹€.
  • 단, 읡λͺ… ν΄λž˜μŠ€μ— μƒμœ„ν΄λž˜μŠ€ 즉, ν˜„μž¬ μƒμ„±ν•˜λŠ” ν΄λž˜μŠ€μ— μ—†λŠ” λ©”μ„œλ“œλ‚˜ ν•„λ“œλ₯Ό μƒˆλ‘œ λ§Œλ“€ κ²½μš°μ—λŠ” μ‚¬μš©μ€ κ°€λŠ₯ν•˜μ§€λ§Œ, 읡λͺ… 클래슀 λ‚΄λΆ€μ—μ„œλ§Œ μ‚¬μš©μ΄ κ°€λŠ₯ν•˜λ©°, μ™ΈλΆ€μ—μ„œλŠ” μ‚¬μš©μ΄ λΆˆκ°€λŠ₯ν•˜λ‹€.
  • 즉, μ™ΈλΆ€μ—μ„œ μ‚¬μš©μ΄ κ°€λŠ₯ν•œκ±΄ μ›λž˜ 클래슀의 μ •μ˜λœ ν•„λ“œλ‚˜ λ©”μ„œλ“œμ΄λ‹€.

βœ… 2. 읡λͺ… 클래슀 μ‚¬μš© 이유

  • 상속 뿐만 μ•„λ‹ˆλΌ μΈν„°νŽ˜μ΄μŠ€, 좔상도 κ°€λŠ₯ν•΄μ„œ 클래슀 μž¬μ‚¬μš© 없이 λ”± ν•œ 번만 κ΅¬ν˜„ν•΄μ„œ μ“Έ 거라면, λ³„λ„μ˜ 클래슀 μ €μœΌμ΄ 말고 읡λͺ… 클래슀λ₯Ό μ‚¬μš©ν•˜λŠ” 것이 더 μ’‹μŒ.
  • μ§€μ—­ λ³€μˆ˜μ²˜λŸΌ 읡λͺ… 클래슀둜 μ •μ˜ν•˜κ³  μŠ€νƒμ΄ λλ‚˜λ©΄ μ‚­μ œλ˜λ„λ‘ ν•  수 μžˆμ–΄ λ©”λͺ¨λ¦¬ μ ˆμ•½ μΈ‘λ©΄μ—μ„œ 이점이 있음.
  • μƒμ†ν•œ 클래슀의 일뢀 λ©”μ„œλ“œλ§Œ κ°„λ‹¨νžˆ μž¬μ •μ˜ν•˜κ³  싢은 경우, ꡳ이 μƒˆ 클래슀λ₯Ό λ§Œλ“€μ§€ μ•Šκ³  κ·Έ μžλ¦¬μ—μ„œ μž¬μ •μ˜λ₯Όν•¨.
  • μΈν„°νŽ˜μ΄μŠ€ 즉석 κ΅¬ν˜„μ΄ κ°€λŠ₯ν•΄μ„œ μŠ€λ ˆλ“œ λ“±μ—μ„œ 많이 μ‚¬μš©μ΄ 됨.