내부 클래스
Inner Class
클래스의 내부에 또 다른 클래스를 가진 클래스. (static 멤버는 포함 할 수 없다.) 1 class Outer {
2 class Inner {
3 ...
4 }
5 }
Outer.class, Outer$Inner.class
Outer.Inner oi = new Outer().new Inner();
Static Inner Class
내부 클래스의 안에 static 멤버를 포함할 수 있다. (외부 클래스의 비 static 멤버는 포함 할 수 없다.) 1 class Outer {
2 static class Inner {
3 ...
4 }
5 }
Outer.class, Outer$Inner.class
Outer.Inner oi = new Outer.Inner();
Local Inner Class
메서드 실행시에 사용되는 클래스를 정의하는 형식으로 접근자나 지정어를 가질 수 없다. 1 class Outer {
2 method() {
3 class Inner {
4 ...
5 }
6 }
7 }
Outer.class, Outer$숫자Inner.class
객체 생성은 외부에서 할 수 없다.
Anonymous Inner Class
기존 클래스의 특정 메서드를 오버라이딩하여 원하는 형태로 재정의하여 사용하는 방식. 외부 멤버중 final만 포함할 수 있다. 1 class Inner { ... }
2
3 class Outer {
4 method() {
5 new Inner() {
6 ...
7 }
8 }
9 }
Outer.class, Outer$숫자.class
new Inner() 자체가 객체 생성이다.
댓글
댓글 쓰기