본문 바로가기

app/java

Inner class 정리

내부클래스(inner class)란?

클래스 안에 선언된 클래스
클래스에 다른 클래스 선언하는 이유는 간단하다. 두 클래스가 서로 긴밀한 관계에 있기
때문이다. 한 클래스를 다른 클래스의 내부클래스로 선언하면 두 클래스의 멤버들간에
서로 쉽게 접근할 수 있다는 것과 외부에는 불필요한 클래스를 감춤으로써 코드의 복잡성
을 줄일 수 있다는 장점을 얻을 수 있다. 


내부클래스의 장점
-내부클래스에서 외부 클래스의 멤버들을 쉽게 접근할수 있다.
-코드의 복잡성을 줄일수 있다.(캡슐화)


내부 클래스는 JDK1.1버젼 이후에 추가된 개념이다. 


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;
         }
     }
 }

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