본문 바로가기

study/java

자바/JAVA 내부 클래스

전에 중첩클래스/중첩인터페이스에 대해 적은 글이 있지만, 이번엔 조금 더 자세하게 적는다.

 

내부 클래스는 클래스 내부에 구현된 클래스이다. 클래스 내부에서 사용하기 위해 선언하고 구현하는 클래스이다. 주로 내부에서만 사용하기 때문에 이름을 따로 정하지 않고 익명으로 사용한다.

 

내부 클래스의 유형

종류 구현 위치 사용할 수 있는 외부 클래스 변수 생성 방법
인스턴스 내부 클래스 외부 클래스 멤버 변수와 동일 외부 인스턴스 변수
외부 전역 변수
외부 클래스를 먼저 만든 후 내부 클래스 생성
정적 내부 클래스 외부 클래스 멤버 변수와 동일 외부 전역 변수 외부 클래스와 무관하게 생성
지역 내부 클래스 메소드 내부에 구현 외부 인스턴스 변수
외부 전역 변수
메소드를 호출할 때 생성
익명 내부 클래스 메소드 내부에 구현
변수에 대입하여 직접 구현
외부 인스턴스 변수
외부 전역 변수
메소드를 호출할 때 생성되거나, 인터페이스 타입 변수에 대입할 때 new 키워드를 사용하여 생성

 

인스턴스 내부 클래스는 보통 외부 클래스의 생성자에서 같이 생성한다. 외부 클래스의 인스턴스를 통해 내부 클래스의 인스턴스를 생성해 사용할 수 있지만 그것은 내부 클래스를 사용하는 의미가 없기 때문에, 그렇게는 사용하지 않는다.

 

정적 내부 클래스는 외부 클래스의 인스턴스가 생성되지 않아도 사용 가능하다

 

지역 내부 클래스가 메소드의 리턴 값이 된다면, 해당 메소드에서 지역 내부 클래스가 참조하는 값은 상수가 된다. -> 메소드가 종료되더라도 해당 값을 참조하기 위해서

 

익명 내부 클래스는 인스턴스가 들어어가할 위치에 직접 인스턴스를 구현해서 사용하는 것이다.

 

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

자바/JAVA 스트림(Stream)  (0) 2021.03.13
자바/JAVA 람다식  (0) 2021.03.12
자바/JAVA Class 클래스  (0) 2021.03.08
자바/JAVA static, final, static final  (0) 2021.03.06
자바/JAVA 메모리 사용 영역(Runtime Data Area)  (0) 2021.02.23