[java] 내부 클래스

내부 클래스

내부 클래스(inner class)

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

내부 클래스의 장점

  1. 내부 클래스에서 외부 클래스의 멤버에 손쉽게 접근할 수 있게 됨
  2. 서로 관련 있는 클래스를 논리적으로 묶어서 표현함으로써, 코드의 캡슐화를 증가시킴
  3. 외부에서는 내부 클래스에 접근할 수 없으므로, 코드의 복잡성을 줄일 수 있음

내부 클래스의 종류

  1. 정적 클래스(static class)
    • 정적 클래스는 주로 외부 클래스(outer class)의 클래스 메소드에 사용될 목적으로 선언됨
  2. 인스턴스 클래스(instance class)

    • 인스턴스 클래스는 주로 외부 클래스(outer class)의 인스턴스 변수나 인스턴스 메소드에 사용될 목적으로 선언됨
  3. 지역 클래스(local class)

    • 외부 클래스의 메소드나 초기화 블록에 선언된 클래스를 의미함
  4. 익명 클래스(anonymous class)

    • 익명 클래스란 다른 내부 클래스와는 달리 이름을 가지지 않는 클래스를 의미함

    • 클래스의 선언과 동시에 객체를 생성하므로, 단 하나의 객체만 생성하는 일회용 클래스임

    • 따라서 생성자를 선언할 수도 없으며, 오로지 단 하나의 클래스나 단 하나의 인터페이스를 상속받거나 구현할 수 있을 뿐임

    • 익명 클래스느 ㄴ매우 제한적인 용도로 사용되며, 구현해야 하는 메소드가 매우 적은 클래스를 구현할 때 사용됨

      //문법
      // 익명 클래스는 선언과 동시에 생성하여 참조변수에 대입함
      클래스이름 참조변수이름 = new 클래스이름(){
       //메소드 선언
      }