[DEV] J-Jay

내부 클래스(Inner Class) 본문

Back-end/Java

내부 클래스(Inner Class)

J-Jay 2024. 6. 1. 21:22
728x90

내부 클래스 (Inner Class)

 

내부 클래스(inner class)란 하나의 클래스 내부에 선언된 또 다른 클래스를 의미한다.

보통 사용자 클래스 자료형이 필요하면, 메인 클래스 외부에 선언하거나, 따로 독립적인 클래스 파일을 만들어 불러와 사용해 왔다.

 

내부 클래스는 내부에 정의된다는 점을 제외하고는 일반적인 클래스와 다르지 않다. 우리가 어느 클래스에 변수나 상수가 필요하다면 클래스 멤버로서 클래스 내에서 선언하여 사용해 왔듯이, 선언 주체를 변수에서 클래스로 바꾼다면 그것이 내부 클래스인 것이다. 이처럼 내부 클래스는 보통 두 클래스가 서로 긴밀한 관계가 있거나, 하나의 클래스또는 메소드에서만 사용되는 클래스일 때 이용되는 기법이라고 보면 된다.

※ 내부(inner) 클래스는 중첩(nested) 클래스로 분류되기도 한다.

 

내부 클래스의 장점

  • 클래스를 논리적으로 그룹화
    클래스가 여러 클래스와 관계를 맺지 않고 하나의 특정 클래스와만 관계를 맺는다면, 외부에 클래스를 새로 작성하는 것이 아닌 내부 클래스로 작성할 수 있다.또한 내부 클래스로 인해 새로운 클래스를 생성하지 않아도 되므로 패키지를 간소화할 수 있다.평소대로라면 아래처럼 외부 혹은 다른 파일로 클래스를 선언해놓고, 인스턴스화 하여 사용해왔을 것이다.

 

    • 더욱 타이트한 캡슐화의 적용
      내부 클래스에 private 제어자를 적용해줌으로써, 캡슐화를 통해 클래스를 내부로 숨길 수 있다.
      즉, 캡슐화를 통해 외부에서의 접근을 차단하면서도, 내부 클래스에서 외부 클래스의 멤버들을 제약 없이 쉽게 접근할 수 있어 구조적인 프로그래밍이 가능해 진다. 그리고 클래스 구조를 숨김으로써 코드의 복잡성도 줄일 수 있다

내부 클래스 종류

  • 인스턴스 클래스
  • 스태틱 클래스
  • 지역 클래스
  • 익명 클래

'Back-end > Java' 카테고리의 다른 글

예외(Exception)  (0) 2024.06.01
다형성(Polymorphism)  (0) 2024.05.19
상속(Inheritance)  (0) 2024.05.19
Java 17 주요변화  (0) 2023.08.31
Java I/O - 2  (0) 2023.05.02