Java

[Java] 익명 클래스

망고고래 2024. 4. 2. 19:39

what?

이름 없는 클래스

why?

코드의 간결성을 높이기 위함

한 번만 사용할 클래스를 익명 클래스로 작성하면 작성과 인스턴스 생성이 동시에 되기 때문에, 불필요한 클래스 파일을 만들지 않아도 된다.

how?

기존의 클래스를 이용하되 오버라이딩

class ClassA{
	void methodA(){
        System.out.println("methodA");
    }
    void methodB(){
        System.out.println("methodB");
    }
}

class ClassB{
    ClassA classA = new ClassA(){
        //메서드 오버라이딩
        void methodA(){
            System.out.println("ClassB 안의 methodA");
        }
    }; //익명 클래스는 끝에 세미콜론 필요
    classA.methodA(); //실행시 "ClassB 안의 methodA" 출력
    
    ClassA classA2 = new ClassA();
    classA2.a();
    //익명 클래스는 일회용이기 때문에 다시 기존 메서드 실행("methodA" 출력)
}

 

인터페이스를 구현할 때도 사용

이 경우 인터페이스 내부의 모든 메서드를 재정의해야 함