코딩공부/자바

자바의 정석 - 자바의 열두 번째 이야기, 객체지향(8)

에반셀린 2023. 3. 9. 21:22

*이 글은 개인적인 공부/기록 목적으로 올립니다.

부족하다고 느껴질 수 있는 글이니 양해 부탁드립니다.*

 

참고도서

http://www.yes24.com/Product/Goods/24259565

 

Java의 정석 - YES24

최근 7년동안 자바 분야의 베스트 셀러 1위를 지켜온 `자바의 정석`의 최신판. 저자가 카페에서 12년간 직접 독자들에게 답변을 해오면서 초보자가 어려워하는 부분을 잘 파악하고 쓴 책. 뿐만 아

www.yes24.com


 내부 클래스(inner class)

 내부 클래스란 클래스 안에 선언된 클래스를 말하는데

특정 클래스 내에서만 사용되는 클래스를 내부 클래스로 선언한다.

 

 주로 GUI 애플리케이션의 이벤트 처리에 주로 사용된다.

// 일반적인 클래스
class A {
...
}

class B {
...
}

// 내부 클래스
class A {
	...
    class B {
    ...
    }
    ...
}

내부 클래스는 내부 클래스에서 외부 클래스의 멤버들을 쉽게 접근할 수 있으며,

코드의 복잡성을 줄일 수 있다. 이 말은 캡슐화가 가능하다는 얘기이다.


 내부 클래스의 종류와 특징

 내부 클래스의 종류는 변수의 선언 위치에 따른 종류와 동일한데

유효 범위와 성질도 변수와 유사하므로 비교해보면 이해하기 쉽다.

내부 클래스 특    징
인스턴스 클래스
(instance class)
외부 클래스의 멤버 변수 선언 위치에 선언하며,
외부 클래스의 인스턴스 멤버처럼 다루어 지는데
주로 외부 클래스의 인스턴스 멤버들과 관련된 작업에
사용될 목적으로 선언된다.
정적 클래스
(static class)
외부 클래스의 멤버 변수 선언 위치에 선언하며,
외부 클래스의 static 멤버처럼 다루어 지는데
주로 외부 클래스의 static 멤버, 특히 static 메서드에서
사용될 목적으로 선언된다.
지역 클래스
(local class)
외부 클래스의 메서드나 초기화 블럭 안에 선언하며,
선언된 영역 내부에서만 사용될 수 있다.

익명 클래스
(anonymous class)
클래스의 선언과 객체의 생성을 동시에 하는
이름없는 클래스이다.(일회성)
단 하나의 객체만을 생성할 수 있다.

 

 내부 클래스의 접근 제어자와 접근성에 대해 설명하자면,

  1. 내부 클래스의 접근 제어자는 변수에 사용할 수 있는 접근 제어자와 동일하다.

  2. static 클래스만 static 멤버를 정의할 수 있다.

  3. 내부 클래스도 외부 클래스의 멤버로 간주되며, 동일한 접근성을 갖는다.

  4. 외부 클래스의 지역 변수는 final이 붙은 변수(상수)만 접근 가능하며,
    지역 클래스의 인스턴스가 소멸된 지역 변수를 참조할 수 있기 때문이다.