본문 바로가기

Java

익명 클래스(anonymous class)

익명클래스는 이름이 없는 클래스로 클래스의 선언과 생성이 동시에 되는 클래스이다.

단, 익명 클래스는 말 그대로 이름이 없는 클래스이기 때문에 재사용이 불가능하다. 

→ 같은 내용의 익명클래스를 두 번 선언하고 생성해도 이를 컴파일하면 .class파일이 다른 이름으로 2개가 생성된다.

( ex 외부클래스이름$1, 외부클래스이름$2  // 이름이 없기 때문에 숫자로 구분된다.)

 

익명 클래스의 특징

  • 재사용이 불가능하다.
  • 선언과 동시에 생성이 된다.
  • 이름이 없기 때문에 생성자를 가질 수 없다.
  • 하나의 클래스를 상속받거나 인터페이스를 구현 가능하다. (2개 이상 x)

익명 클래스를 사용하는 이유

익명 클래스를 사용하는 이유는 코드 내에서 한 번만 만들어지고 사용되는 객체의 경우 별도의 클래스 파일을 만드는 것보다 익명 클래스로 1회성으로 사용하는 것이 유지보수 면에서 유리하다.

 

익명 클래스 선언 방법

부모클래스나인터페이스의이름 변수명 =  new 부모클래스나인터페이스의이름() {  /* 오버라이딩 */  };

 

 

public class Test { // 추상 메서드를 구현하도록 강제성 부여
	
	public static void main(String[] args) {
		// AnonyclassTes타입이 아니라 AnonyclassTest를 구현한 클래스이다.
		// 인터페이스는 객체 생성불가
		AnonyclassTest anonyclassTest = new AnonyclassTest() { // 익명 클래스 생성 
			@Override
			public void method() {
				System.out.println("over riding method");
			}
		};
		anonyclassTest.method();
		
		method1(new AnonyclassTest() {
			@Override
			public void method() {
				System.out.println("파라미터로 익명클래스를 참조한다.");
				
			}
		});
		
		
	}
	
	static public void method1(AnonyclassTest A) {
		A.method();
	}
}

 

 

 

'Java' 카테고리의 다른 글

throw, checked - unchecked 예외, throw  (0) 2023.05.23
예외  (0) 2023.05.22
초기화 블록  (0) 2023.05.15
인터페이스(interface)  (0) 2023.05.12
추상클래스  (0) 2023.05.11