상대적으로 자주 쓰이지는 않지만 알아야 할 개념인 내부클래스와 익명클래스에 대해 알아보자.
◆ 내부(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();
}