본문 바로가기

Java/Theory

Chapter 5. Inner Class

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