아래의 내용은 자바의 정석에서 발췌 또는 참고하였습니다. 


내부클래스 : 클래스내에 선언된 클래스

장점 : 

- 내부 클래스에서 외부 클래스의 맴버들을 쉽게 접근할 수 있다.

- 코드의 복잡성을 줄일 수 있다.(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
Posted by HHHimchan
,