본문 바로가기

Java/Java의 정석 - 객체지향프로그래밍

내부 클래스(inner class)

내부 클래스

  내부 클래스는 클래스 내에 선언된 클래스이다. 두 클래스의 관계가 긴밀할 때 클래스 내에 다른 클래스를 선언한다.

  내부 클래스의 장점

- 내부 클래스에서 외부 클래스의 멤버들을 쉽게 접근할 수 있다.

- 코드의 복잡성을 줄일 수 있다(캡슐화).


  내부 클래스의 종류

내부 클래스 특          징
인스턴스 클래스
(instance class)
외부 클래스의 멤버변수 선언위치에 선언하며, 외부 클래스의 인스턴스멤버처럼 다루어진다. 주로 외부 클래스의 인스턴스멤버들과 관련된 작업에 사용될 목적으로 선언된다.
스태틱 클래스
(static class)
외부 클래스의 멤버변수 선언위치에 선언하며, 외부 클래스의 static멤버처럼 다루어진다. 주로 외부 클래스의 static멤버, 특히 static 메서드에서 사용될 목적으로 선언된다.
지역 클래스
(local class)
외부 클래스의 메서드나 초기화블럭 안에 선언하며, 선언된 영역 내부에서만 사용될 수 있다.
익명 클래스
(anonumous class)
클래스의 선언과 객체의 생성을 동시에 하는 이름없는 클래스(일회용)

  내부 클래스의 선언위치에 따라 같은 곳에 선언된 변수와 동일한 유효범위(scope)와 접근성(accessibility)을 갖는다. 따라서 인스턴스 클래스와 스태틱 클래스는 외부 클래스의 인스턴스 멤버와 스태틱 멤버의 관계성을 동일하게 갖는다.
  내부 클래스도 abstract나 final과 같은 제어자 혹은 멤버변수처럼 private, protected의 접근제어자도 사용이 가능하다(원래 클래스는 public, default 접근제어자만 사용가능).

*. 참고) final이 붙은 변수는 상수이므로 어떤 경우에도 static을 붙이는 것이 가능하다.

  익명클래스는 클래스의 선언과 객체의 생성을 동시에 하기 때문에 단 한번만 사용될 수 있고 오직 하나의 객체만을 생성할 수 있는 일회용 클래스이다. 이름이 없기 때문에 생성자도 가질 수 없으며, 조상클래스의 이름이나 구현하고자 하는 인터페이스의 이름을 사용해서 정의하기 때문에 하나의 클래스로 상속받는 동시에 인터페이스를 구현하거나 둘 이상의 인터페이스를 구현할 수 없다.

참고

https://siyoon210.tistory.com/141

*

'Java > Java의 정석 - 객체지향프로그래밍' 카테고리의 다른 글

추상클래스와 인터페이스  (0) 2022.02.15
다형성(polymorphism)  (0) 2022.02.09
제어자(modifier)  (0) 2022.02.05
오버라이딩(overriding)  (0) 2022.02.05
Object클래스  (0) 2022.02.05