티스토리 뷰

dev/java

4대 중첩 클래스

altvirus 2008. 9. 27. 12:26

1. 중첩 클래스
- 클래스의 효율적인 관리를 위한 하나의 형식
- Outer class의 멤버를 Inner class가 직접 접근 가능, 반대는 불가 (scope)
- Outer class에서 Inner class를 접근하기 위해 instance 생성
- Inner class static 멤버 사용 불가

class Outer { // outer class
	
	private int x = 100;
	
	public void aaa(){}

	
	class Inner { // inner class
		private int y = 200;
		public void bbb(){
			// Outer의 멤버를 사용할 수 있다.
			aaa();
			System.out.println("x = " + x);
			System.out.println("y = " + y);
		}

	
	}
}

public class T1 {
	public static void main(String[] args) {
		Outer o = new Outer();
		Outer.Inner i = o.new Inner();
		
	}
}


2. 정적 중첩 클래스
- 객체를 독립적으로 생성 (Outer.Inner instance = new Outer.Inner())
- Inner class에 static 멤버 사용 가능
- Inner class에서 Outer class의 static 멤버만 접근 가능

3. 지역 중첩 클래스
- 특정 메서드를 실행할 때에만 필요하고 별로 사용할 경우가 없는 경우
- 접근 제한자 지정 예약어 사용 불가
- 메서드의 멤버를 사용하려면 그 멤버는 반드시 final로 선언

4. 익명 중첩 클래스
- class라는 예약어를 가지지 않고 단지 instance의 생성과 내용부의 정의만 갖음
- instance 생성시 해당 클래스의 일부를 재정의 (source class를 재정의 하기 때문에 현재 class는 Outer class)
- 현재 class의 접근가능 변수는 final

'dev > java' 카테고리의 다른 글

[16] 1바이트 입력  (0) 2008.09.27
[16] 1바이트 출력  (0) 2008.09.27
Inner Class  (0) 2008.09.27
this는 자기자신의 객체..  (0) 2008.09.25
객체는 Reference로....  (0) 2008.09.22
공지사항