아래의 내용은 자바의 정석에서 발췌 또는 참고하였습니다.
내부클래스 : 클래스내에 선언된 클래스
장점 :
- 내부 클래스에서 외부 클래스의 맴버들을 쉽게 접근할 수 있다.
- 코드의 복잡성을 줄일 수 있다.(Encapsulation)
용도 :
- JAVA GUI 의 이벤트 처리시 주로 사용함(AWT, Swing)
Instance, Static, local Class는 서로의 상관관계 및 신규 객체 생성방법, 접근성을 위주로 한 두번씩 시험?같은 거에서 묻기도 하네요
사용빈도는 적어도 정확히 알아놓으면 좋겠지요?
종류 :
[1] Instance Class
- 외부 클래스의 맴버변수 선언위치에 선언함,
- 외부 클래스의 instance member 처럼 다루어 진다.
- 주로 외부클래스의 Instance member 들과 관련된 작업에 사용될 목적으로 선언
// Example
class Outer{
class Inner{
....
}
}
[2] Static Class
- 외부 클래스의 맴버변수 선언위치에 선언됨. (Instance Class와 동일 위치)
- 외부 클래스의 Static member 처럼 다루어 진다.
- 주로 외부 클래스의 static 맴버, 특히 static method에서 사용될 목적으로 선언됨.
========================
// Example
class Outer{
static class Inner{
....
}
}
[3] Local Class
- 외부 클래스의 메서드나 초기화 블럭 안에 선언하며, 선언된 영역 내부에서만 사용가능하다.
// Example
class Outer{
void methodA{ // 외부 클래스(Outer)의 Method
class LocalInner{ // 안에 선언된 Class
......
}
}
}
Inner 클래스에서 따로 분류하는 것 같기도 한데 함께 포함시켰습니다.
[4] Anonymous Class (익명클래스)
- 이름이 없는 클래스
- 클래스의 선언과 객체의 생성을 동시에 하기 때문에 단 한번만 사용되며, 오직 하나의 객체만을 생성하는 일회성의 클래스
- new 수식의 연장이므로 {,(,).} 등에 헷갈리지 않도록 주의
=========구현 룰========
new 조상클래스이름{
...
}
or
new 구현인터페이스이름{
...
}
=========================
>> 예제
===================================================
// Example
import java.awt.Button;
import java.awt.Frame;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class Inner {
public static void main(String args[]) {
Frame f = new Frame("Frame");
Button b = new Button("btn");
// ActionListener Interface를 구현
b.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
System.out.println("Action Event ");
}
});
// 괄호관계가 복잡하므로 차근차근 살펴보자
f.setSize(300,200);
f.add(b);
f.setVisible(true);
}
}
각 클래스별의 상세한 접근성 부분은 별도로 추가작성하겠습니다.
'Computer Science > JAVA' 카테고리의 다른 글
| Thread-2 (Wait & notify) (1) | 2015.12.03 |
|---|---|
| Thread-1 (Basic) (0) | 2015.12.03 |
| Hashmap 과 Treemap 의 차이 (0) | 2015.12.02 |
| E-Clipse Java Font 수정 (0) | 2015.11.18 |
| StringBuilder (0) | 2015.11.18 |

