IT 개발노트

내부 클래스란? 본문

기초튼튼/JAVA

내부 클래스란?

limsungju 2019. 1. 29. 19:28

1. 내부 클래스
1.1 내부 클래스란?

- 클래스내부에 또 하나의 다른 클래스가 정의되는 것
- 단독으로 실행될 일이 거의 없고 특정 클래스가 사용될 때만 함께 사용되는    클래스를 그 특정 클래스 내부에 정의하여 사용한다.
- 내부 클래스는 외부 클래스의 자원(변수, 메서드)을 직접 사용할 수 있다.
- 종류에는 기본 Inner클래스 / Nested(중첩) 클래스 / Local(지역) 클래스 /        Anomous(익명) 클래스, 이렇게 네가지가 있다.

1.2 Inner Class (내부 클래스


- 외부 클래스가 내부 클래스를 인스턴스변수처럼 사용하도록 구현한 것이다.
- 내부 클래스는 public 접근제어자를 가진다.
- 내부 클래스는 외부 클래스의 자원을 직접 사용할 수 있다.
- 외부 클래스는 내부 클래스를 직접 사용할 수는 없다.
- 외부 클래스는 내부 클래스를 인스턴스변수처럼 객체화 하여 사용할 수 있      다.

- 내부 클래스의 객체화 방법

1. 외부 클래스를 먼저 객체화 한다.

외부클래스명 객체명 = new 외부클래스명 

 Outer out = new Outer();

 2. 후에 내부 클래스를 객체화 한다.

외부클래스명.안쪽클래스명 객체명 = 외부클래스명.new 내부클래스생성자(); 

 Outer.Inner in = out.new Inner();

-class 파일은 아래와 같이 생성이 된다.

외부클래스명.class 

외부클래스명$내부클래스명.class 

1.3 Nested Class (중첩 클래스)


- 외부 클래스가 내부 클래스를 static변수처럼 사용하도록 구현한 것이다.
  (static 영영끼리 사용하는 것이다.)
- 내부 클래스는 static접근제어자를 가진다.
- 내부 클래스에서는 외부 클래스의 static영역의 자원만 사용 할 수 있다.
  (인스턴스영역은 사용 할 수 없다.)
- 외부 클래스의 static영역은 내부 클래스의 static영역을 사용 할 수 있다.
  (외부 클래스는 내부 클래스의 인스턴스영역도 사용할 수 있지만 객체화하      여 사용하여야 하고, 중첩 클래스를 사용하는 취지와 맞지 않으므로 일반적    으로 사용하지 않는다.)
- class 파일은 아래와 같이 생성이 된다.

외부클래스명.class

외부클래스명$내부클래스명.class 

1.4 Local Class (지역 클래스)


- 클래스를 지역변수처럼 사용하기 위해서 구현 한 것이다.
- 내부 클래스는 메서드 내부에서만 사용된다.
- 메서드 호출이 끝나면 내부 클래스도 메모리에서 사라진다.
- 외부 클래스는 내부 클래스를 절대로 사용 할 수 없다.
- 내부 클래스는 외부 클래스의 인스턴스 영역에 있는 자원을 직접 사용할 수    있다.
- 내부 클래스는 메서드의 지역변수나 매개변수를 final이 붙은 경우에만 사용    할 수 있다. (final이 없으면 사용 불가)

1.5 Anonymous Class (익명 클래스)


- 클래스(인터페이스)가 매개변수일 때 메서드를 호출하고 싶으면 매개변수와    관련이 있는 상속관계의 클래스를 작성하고 그 객체를 생성하여 인자값으로    넣어줘야 한다.
- 클래스를 따로 생성하지 않고 인자값에서 직접 생성하는데, 이때 생성하는      클래스가 익명 클래스이다.
- 클래스 파일명은 아래와 같이 생성이 된다.

외부클래스명$1.class



'기초튼튼 > JAVA' 카테고리의 다른 글

컬렉션이란  (0) 2019.02.07
예외처리  (0) 2019.01.30
인터페이스란?  (0) 2019.01.28
추상클래스란?  (0) 2019.01.27
다형성이란?  (0) 2019.01.26