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