2017. 1. 28. 04:39ㆍWork/Java
내부 클래스
Inner class, 내부 클래스, 이너 클래스 또는 중첩 클래스 라고 불림
내부 클래스의 메소드나 속성에 static 키워드 선언을 할 수 없다.
단, final 키워드와 붙여서 선언할 수는 있다.
내부 클래스를 사용하기 위해서는 외부 클래스를 인스턴스화 해야 한다.
내부 클래스의 클래스 이름은 외부 클래스 안에서만 중복되지 않으면 된다.
class OuterClass{ // 외부 클래스
class InnerClass{ // 내부 클래스
}
}
- 인스턴스 내부 클래스
인스턴스 내부 클래스를 줄여서 내부 클래스라고 부르기도 한다.
(일반적인 형태)
OuterClass oc = new OuterClass();
InnerClass ic = oc.new InnerClass();
OuterClass.InnerClass innerObjerct = oc.new InnerClass();
- 정적 내부 클래스
외부 클래스의 객체가 없이도 바로 인스턴스화 할 수 있다.
class OuterClass{
static class InnerClass{
}
}
InnerClass io = new OuterClass.InnerClass();
- 지역 내부 클래스
메소드 내부에 클래스를 선언해서 사용, 따로 인스턴스를 생성하지 않고 OuterClass인 외부 클래스를 인스턴스하여 메소드를 사용한다.
class OuterClass{
void OuterClassMethod(){
class LocalInnerClass{
}
}
}
- 일회용으로 사용되는 익명 클래스
인터페이스를 구현한 클래스가 잠시 필요한 경우
기존에 구현된 클래스의 일부만 오버라이딩해서 변경하는 경우
class OuterClass{
Object getName()
--------------------------------------------------------------
익명 클래스 영역
{
return new Object(){
}
--------------------------------------------------------------
}
}