아래의 내용은 자바의 정석에서 발췌 또는 참고하였습니다.
내부클래스 : 클래스내에 선언된 클래스
장점 :
- 내부 클래스에서 외부 클래스의 맴버들을 쉽게 접근할 수 있다.
- 코드의 복잡성을 줄일 수 있다.(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 |