Chapter 5. Inner Class
1. Inner Class
- Class 내에 선언된 Class
- Class와 Class간에 긴밀한 관계에 있을 시 사용된다.
- 주로 AWT나 Swing과 같은 GUI Application의 Event 처리에서 사용되며 사용빈도가 높지 않다.
- 장점
· Inner Class에서 Outer Class의 Member에 쉽게 접근할 수 있다.
· Code의 복잡성을 줄일 수 있다(Encapsulation)
- Inner Class 종류
· 변수의 선언 위치에 따라 종류가 달라진다.
· 종류
◦ Instance Class
▹ 위치 : Outer Class의 Member 선언위치에 선언
▹ 특징 : Outer Class의 Instance Member처럼 다뤄진다.
▹ 목적 : 주로 Outer Class의 Instance Member와 관련된 작업에 사용될 목적으로 선언
◦ Static Class
▹ 위치 : Outer Class의 Member 선언 위치에 선언
▹ 특징 : Outer Class의 static Member처럼 다뤄진다.
▹ 목적 : 주로 Outer Class의 static Member나 static Method에서 사용될 목적으로 선언
◦ Local Class
▹ 위치 : Outer Class의 Method나 Initial Block 내에 선언
▹ 특징 : 선언된 내부에서만 사용가능
◦ Anonymous Class
▹ Class의 선언과 객체의 생성을 동시에 하는 이름 없는 Class(일회용)
- 선언
· Example
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | class Outer { class Instance { //Instance Class ...... } static class StaticInner{ //Static Class ...... } void Method() { ...... class LocalInner { //Local Class ...... } } } | cs |
- Inner Class의 제어자
· Inner Class에서도 일반 Class에서처럼 접근 제어자가 사용가능하다.
· 접근 제어자
◦ static
◦ final
◦ abstract
◦ private
◦ protected
· 특징
◦ Inner Class는 Outer Class의 Member 변수와 같은 성질을 갖는다.
◦ static Member는 static Class만 가질 수 있다.
◦ final, static을 동시에 사용하면 상수(Constant)로서 정의된다.
◦ Local Class는 Outer Class의 Instance Member와 static Member를 모두 사용할 수 있다.
◦ Local Class는 Local Class가 포함된 Method에 정의된 지역변수를 사용할 수 있다.
◦ Member 특징
▹ Instance Member
▸ 같은 Class에 있는 Instance Member와 static Member 모두 직접 호출 가능
▸ Outer Class의 Instance Member를 객체 생성 없이 호출 가능
▹ static Member
▸ Instance Member를 직접 호출할 수 없다.
▸ Outer Class의 Instance Member를 객체 생성 없이 사용 가능
- Anonymous Class
· 다른 Class와 달리 이름이 없는 Class
· 형식
◦ 형식 1
1 2 3 | new ParentClassName() { Members; } | cs |
◦ 형식 2
1 2 3 | new ImplementationInterfaceName() { Members; } | cs |
· 특징
◦ Class의 선언과 동시에 객체를 생성하기 때문에 한 번만 사용가능하다.
◦ [OuterClassName]$[Number].class 형식으로 Class File 명이 결정된다.
'Java > Theory' 카테고리의 다른 글
Chapter 7. Useful Classes I (0) | 2015.08.19 |
---|---|
Chapter 6. Collection Framework (0) | 2015.08.19 |
Chapter 4. java.lang Package (0) | 2015.08.19 |
Chapter 3. Exception Handling (0) | 2015.08.19 |
Chapter 2. 객체지향 프로그래밍 II (0) | 2015.08.19 |