티스토리 뷰

728x90

우리는 개발을 하다가 보면 한번만 사용 될 클래스가 필요한 경우가 있다.

그런 상황에서 새로운 클래스를 만드는 것은 깔끔하지 못한 방법이라고 생각든다.

그럴 때 사용할 수 있는 것이 익명 클래스(Anonymous inner class)이다.

 

익명 클래스는 크게 두 가지 방법으로 구현될 수 있다.

1. class

2. interface

 

또한 이러한 익명 클래스의 타입은 크게 3가지가 존재한다.

1. 클래스를 확장하는 익명 클래스

//Java program to illustrate creating an immediate thread 
//Using Anonymous Inner class that extends a Class 
class MyThread  
{ 
    public static void main(String[] args) 
    { 
        //Here we are using Anonymous Inner class 
        //that extends a class i.e. Here a Thread class 
        Thread t = new Thread() 
        { 
            public void run() 
            { 
                System.out.println("Child Thread"); 
            } 
        }; 
        t.start(); 
        System.out.println("Main Thread"); 
    } 
} 

(출처 : https://www.geeksforgeeks.org/anonymous-inner-class-java )

 

이와 같이 기존의 클래스에 함수를 구현하는 방식이 존재한다.

 

2. 인터페이스를 구현하는 익명 클래스

//Java program to illustrate defining a thread 
//Using Anonymous Inner class that implements an interface 
class MyThread 
{ 
	public static void main(String[] args) 
	{ 
		//Here we are using Anonymous Inner class 
		//that implements a interface i.e. Here Runnable interface 
		Runnable r = new Runnable() 
		{ 
			public void run() 
			{ 
				System.out.println("Child Thread"); 
			} 
		}; 
		Thread t = new Thread(r); 
		t.start(); 
		System.out.println("Main Thread"); 
	} 
} 

(출처 : https://www.geeksforgeeks.org/anonymous-inner-class-java/ )

 

이와 같이 기존의 인터페이스를 구현하는 방식으로 익명 클래스를 생성할 수 있다.

 

3. 생성자나 메서드의 내부 인자를 정의하는 익명 클래스

//Java program to illustrate defining a thread 
//Using Anonymous Inner class that define inside argument 
class MyThread  
{ 
    public static void main(String[] args) 
    { 
        //Here we are using Anonymous Inner class 
        //that define inside argument, here constructor argument 
        Thread t = new Thread(new Runnable() 
        { 
            public void run() 
            { 
                System.out.println("Child Thread"); 
            } 
        }); 
          
        t.start(); 
          
        System.out.println("Main Thread"); 
    } 
} 

(출처 : https://www.geeksforgeeks.org/anonymous-inner-class-java/ )

 

이와 같이 익명 클래스가 인자가 되어 생성자나 메서드의 내부 인자가 된다.

댓글
최근에 올라온 글
최근에 달린 댓글
링크