본문 바로가기
프로그래밍 언어/JAVA

[JAVA] 내부 클래스 (inner class)

by 느링 2017. 9. 5.

내부 클래스 (inner class)란

내부 클래스(중첩 클래스)는 클래스 안에 클래스를 정의한 입니다.

클래스에 다른 클래스를 선언하는 이유는 두 클래스가 서로 긴밀한 관계에 있기 때문입니다.

한 클래스를 다른 클래스의 내부 클래스로 선언하면 두 클래스의 멤버들 간에 서로 쉽게 접근할 수 있다는 장점과 외부에는 불필요한 클래스를 감춤으로써 코드의 복잡성을 줄일 수 있다는 장점을 가지고 있습니다.

 

※ 기본 구조

class A {     //외부 클래스

class B // 내부 클래스

{

//멤버 변수, 메소드, 생성자

}

}

 

- 이때 내부 클래스인 B는 외부 클래스 A를 제외하고는 다른 클래스에서 잘 사용되지 않는 것이어야 합니다.

- 내부 클래스는 여러개 있어도 상관이 없으며, 단 이름은 달라야 합니다.

- Inner클래스에서 Outer클래스 멤버에는 접근이 가능하지만,

Outer클래스에서 Inner클래스 멤버에는 접근이 불가능 합니다. ( 다만, Inner 클래스 객체 생성 후에는 접근이 가능합니다.)

 

* Inner class 종류 *

① instance class

- 외부 클래스의 멤버 변수 위치에 선언합니다.

- 멤버 변수처럼 다뤄집니다.

② static class

- 외부 클래스의 멤버 변수 위치에 선언합니다.

- static 멤버처럼 다뤄집니다.

- 외부 클래스 객체 생성 없이 내부 클래스 객체 생성이 가능합니다.