내부클래스(inner class)란?
Inner Class에서 OuterClass의 변수를 참조하려면 아래와 같이~
class OuterClass {
int out_value = 10;
class InnerClass {
static final int value = 20;
void methodCall() {
int in_value = value;
int in_value2 = this.value;
int in_value3 = Outer.this.value;
}
}
}
- Inner Class가 있는 Class를 컴파일하면,
그 Inner Class가 새로운 클래스로 인식되어 별도의 *.class 파일이 생성된다.
앞에 확장자가 $표시로 되어 있는데, 이 클래스 파일을 열어보면 Inner Class로
선언한 내용이 들어있다.
그리고 Inner Class에 없었던 access란 메소드가 생기는 데,
원래 Inner Class의 private member가 그 클래스를 포함하는 클래스에서
그냥 접근 가능하게 되기 때문에 그것을 가능하게 하기 위해서 생기게 된다~
클래스 안에 선언된 클래스 클래스에 다른 클래스 선언하는 이유는 간단하다. 두 클래스가 서로 긴밀한 관계에 있기 때문이다. 한 클래스를 다른 클래스의 내부클래스로 선언하면 두 클래스의 멤버들간에 서로 쉽게 접근할 수 있다는 것과 외부에는 불필요한 클래스를 감춤으로써 코드의 복잡성 을 줄일 수 있다는 장점을 얻을 수 있다. 내부클래스의 장점 -내부클래스에서 외부 클래스의 멤버들을 쉽게 접근할수 있다. -코드의 복잡성을 줄일수 있다.(캡슐화) 내부 클래스는 JDK1.1버젼 이후에 추가된 개념이다. |
class OuterClass {
int out_value = 10;
class InnerClass {
static final int value = 20;
void methodCall() {
int in_value = value;
int in_value2 = this.value;
int in_value3 = Outer.this.value;
}
}
}
in_value 의 값은 20
in_value2 의 값도 20
in_value3 의 값은 10이 들어갑니다.
JVM에는 Inner Class란 것이 없는데 어떻게 동작하는 걸까?
- Inner Class가 있는 Class를 컴파일하면,
그 Inner Class가 새로운 클래스로 인식되어 별도의 *.class 파일이 생성된다.
앞에 확장자가 $표시로 되어 있는데, 이 클래스 파일을 열어보면 Inner Class로
선언한 내용이 들어있다.
그리고 Inner Class에 없었던 access란 메소드가 생기는 데,
원래 Inner Class의 private member가 그 클래스를 포함하는 클래스에서
그냥 접근 가능하게 되기 때문에 그것을 가능하게 하기 위해서 생기게 된다~
'app > java' 카테고리의 다른 글
이클립스 자동 들여쓰기 ctrl + shift + F 비주얼 스튜디오 alt+F8 (2) | 2010.03.20 |
---|---|
태그 연습장 (0) | 2009.11.01 |
String vs Stringbuffer vs Stringbuilder (0) | 2009.01.05 |
파일입출력 (0) | 2008.05.17 |
SWT 플러그인!! (0) | 2008.05.08 |