JAVA

중첩 클래스(outer class, nested class, local class, anonymous class)

homoon 2023. 5. 2. 16:28
  1. 자바에서는 클래스 안에서 클래스를 정의할 수 있다.
    1. 내부에 클래스를 가지고 있는 클래스를 외부클래스(outer class)라고 한다.
    2. 클래스 내부에 포함되는 클래스를 중첩 클래스(nested class)라고 한다.
  2. 중첩 클래스의 종류
    1. 정적 중첩 클래스 - 앞에 static이 붙어서 내장되는 클래스
    2. 비정적 중첩 클래스 - static이 붙지 않은 일반적인 중첩 클래스
      1. 내부 클래스 - 클래스의 멤버처럼 선언되는 중첩 클래스
      2. 지역 클래스 - 메소드의 몸체 안에서 선언되는 중첩 클래스
      3. 익명 클래스(anonymouse class) - 수식의 중간에서 선언되고 바로 객체화되는 클래스
  3. 지역 클래스(local class)
    1. 지역 클래스는 메소드 안에 정의되는 클래스이다.
    2. 지역 클래스는 abstract 또는 final로만 지정할 수 있다.
  4. 중첩 클래스를 사용하는 이유
    1. 중첩 클래스는 외부 클래스의 멤버가 private로 선언되어 있더라도 접근할 수 있다.
    2. 중첩 클래스는 외부에서 보이지 않는다. 즉 철저하게 감춰진다.
    3. 익명 클래스는 콜백 메소드(callback method)를 작성할 때 아주 편리하다.
  5. 익명 클래스(anonymous class)
    1. 익명 클래스는 클래스 몸체는 정의되지만 이름이 없는 클래스이다.
      1. 익명 클래스는 클래스를 정의하면서 동시에 객체를 생성하게 된다.
      2. 이름이 없기 때문에 한 번만 사용이 가능하다.
      3. 익명 클래스는 코드의 양을 줄일 수 있는 장점도 있지만 반면에 표기법이 상당히 난해하다.
      4. 익명 클래스는 하나의 객체만 생성하면 되는 경우에 많이 사용된다.
      5. 익명 클래스는 부모 클래스에서 상속을 받아서 작성하거나 인터페이스를 구현하여서 작성할 수 있다.