프리 정보 컨텐츠

자바 익명 클래스란? 본문

JAVA

자바 익명 클래스란?

쏜스 2021. 1. 13. 02:36

자바가 사용하는 InnerClass 중의 한 종류인 익명 클래스라는 것은 자주 사용하게 된다. 

익명 클래스는 부모 클래스를 상속받는 클래스를 따로 생성하지 않아도 단일 객체를 통해서 사용할 수 있다.

익명 클래스는 클래스와 인터페이스로부터 만들 수 있다.

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

익명 클래스가 클래스를 따로 생성하지 않아도 사용할 수 있다는 것을 알았다.

하지만 익명 클래스를 굳이 왜 사용해야되는걸까?

 

익명클래스는 1회용 자식 클래스 사용하므로 불필요한 클래스를 만들지 않아도 된다.

불필요한 클래스를 만들지 않음으로써 코드의 가독성, 유지보수, 길이를 줄일 수가 있다.

class Inner4 {
	// 익명 클래스는 자주 쓰이고 중요하니 숙지 필요
	int x = 40;
	int y = 50;
	public void disp() {
		System.out.println("x = " + x);
	}
}
// 일반 상속 자식 클래스 만드는 방법1
class Inner44 extends Inner4{
	@Override
	public void disp() {
		System.out.println("y = " + y);
	}
}
public class Exam4 {
	public static void main(String[] args) {
		// 자식 기준 사용법
		Inner44 inner44 = new Inner44();
		inner44.disp();
		// 부모 기준 사용법
		Inner4 inner4 = new Inner44();
		inner4.disp();
		
		int a = 100;
		
		// 익명 클래스 사용 -> 부모 기준 사용법 사용빈도수가 높음
		Inner4 inner = new Inner4() {
			@Override
			public void disp() {
				System.out.println("익명 클래스, y =" + y);
				System.out.println("a = " + a); // 함수안에서 지정한 지역변수는 final 로 a값 전환 불가
			}
		};
		inner.disp();
	}
}

실행결과

위의 예시를 통해 상속할 때 부모 클래스의 사용법과 익명 클래스를 사용할 때의 차이점을 알아볼 수 있다.

익명클래스의 형식은 다음과 같다.

부모클래스 인스턴스 = new 부모클래스() {

};

익명클래스는 별도의 생성자를 작성하지 않으며, 생성자와 동일하게 객체를 생성할 뿐이다.

 

Comments