프로그래밍 공부
카테고리
작성일
2022. 8. 13. 11:57
작성자
WDmil
728x90

중첩 클래스

- 클래스 내부에 클래스를 만들어서 사용하는걸 의미한다.

- 프로그래밍을 할 때 여러 군데서 사용하는 클래스가 아니라면 파일을 새로 만들거나 코드의 아래 부분으로 내려서 만들지 않고 바로 만들어서 바로 쓸 수 있도록 하는 개념이다.

- 경우에 따라서는 객체를 생성할 수 있는 부분이 클래스를 설계한 부분으로 한정되어 있는 경우도 있다.

- 클래스 내부에 만든 클래스를 Inner Class 라고 부르며 Inner 클래스를 감싸고 있는 클래스를 Outer Class 라고 부른다.

 

일반 중첩 클래스

- 클래스 내부에 클래스를 만들어서 사용하는 경우이다.

- Inner 클래스의 객체를 만들기 위해서는 반드시 Outer 클래스의 객체를 생성하고 이를 통해 Inner 클래스를 만들어야 한다.

- Inner 클래스는 Outer 클래스의 맴버에 접근할 수 있지만 Outer 클래스는 Inner 클래스의 맴버에 접근 할 수 없다. Inner 클래스의 맴버는 Outer 클래스의 객체가 생성되어 있다는 가정하에 사용하므로 접근이 가능하지만 Outer 클래스는 Inner 클래스의 객체의 생성과 관계가 없으므로 Inner 클래스에 대한 접근이 자유롭지 못하다.

Outer 클래스에서 Inner클래스의 변수를 가져올 수 없다. Outer 클래스에서는 아직 선언되지 않았다고 보기 때문이다.

static 중첩 클래스

- 일반 중첩 클래스에서 Inner 클래스가 static 으로 정의된 경우이다.

- Inner 클래스가 Static 으로 정의되어 있어 Outer 클래스의 객체 생성 없이 바로 객체 생성이 가능하다.

- Inner 클래스에서는 Outer 클래스에 정의된 맴버 중에 Static 맴버만 접근이 가능하다. Outer 클래스의 객체 생성 없이 바로 Inner 클래스의 객체를 생성하므로 Outer 클래스의 객체가 생성되지 않았다는 가정하에 개발을 해야한다.

 

static 이라 다른 class에서 일정 방법으로 접근이 가능하다. 그러나, static이 아닌 변수는 Inner라도 접근 할 수 없다.

메서드 내부의 중첩 클래스 

- 클래스를 메서드 내부에 만든 경우를 의미한다

- 메서드 내부에 만든 중첩 클래스는 다른곳에서 참조 변수 조차 선언할 수 없다.

- Inner 클래스에서는 클래스 내부에 선언한 변수만 사용할 수 있으며 클래스를 만든 메서드 내부에 있는 지역 변수 중 final 변수만 접근이 가능하다. 그 외의 모든 변수는 접근이 불가능하다.

 

익명 중첩 클래스

- 클래스로 부터 객체 생성을 할 때 클래스 내부 코드를 바로 작성하는 것을 의미한다.

- 원본 클래스가 가지고 있는 메서드를 Overriding 해야 할 경우 상속받은 클래스를 만들지 않고 바로 Overriding 을 할 수 있다.

- 추상 클래스라는 것을 이용할 때 자주 사용하는 기법 이다.

 

 

 

정리, 중첩 클래스는 해당 코드 내부에서만 사용하는 클래스 일 경우에만 사용하도록 하자, 다른곳에서는 사용할 수 없기 떄문에 객체지향적이지 않을 수 있다.

728x90

'JAVA' 카테고리의 다른 글

JAVA 인터페이스  (0) 2022.08.13
JAVA 추상클래스  (0) 2022.08.13
JAVA Final  (0) 2022.08.13
JAVA Static  (0) 2022.08.12
JAVA 캡슐화  (0) 2022.08.12