상대적으로 자주 쓰이지는 않지만 알아야 할 개념인 내부클래스와 익명클래스에 대해 알아보자.


◆ 내부(inner)클래스

클래스 내부에 또 다른 클래스를 선언하는 것. 두 클래스의 멤버에 쉽게 접근하기 위해 사용하는 방법이지만 잘 쓰이지는 않는다.

public class Outer{
	int a;
    // 내부클래스
	class Inner{
		int a
    }
}

같은 필드명을 사용하더라도 내부클래스와 본래의 클래스의 필드는 다른 것이다.


▶ 내부 클래스 선언

Public static void main(String[] args){
	Outer o = new Outer(); // 원본 클래스 객체
	Outer.Inner i = o.new Inner(); // 내부 클래스 객체
}

원본 클래스 객체를 먼저 생성하고 원본 클래스객체를 이용하여 내부 클래스 객체를 생성할 수 있다.



◆ 익명(anonymous)클래스

이름이 없는 클래스로 주로 메서드를 재정의함과 동시에 해당 메서드를 호출하는 용도로 사용.

public class Ano{
	public void method(){
		System.out.println(“원래메서드”);
    }
}

// 위와 같은 익명클래스가 있을 ,
Public static void main(String[] args){
    // 오버라이드 동시에 호출
	New Ano(){
		@Override
		Public void method{
			System.out.println(“메서드오버라이드”);
            };
	}.method();
}