Item 22.
static 멤버 클래스를 많이 사용하자.
Chapter 4. 클래스와 인터페이스
nested class(inner class)
• static 멤버 클래스
• static이 아닌 멤버 클래스
• 익명 클래스
• 지역 클래스
static 멤버 클래스
• 다른 클래스의 static 멤버로 선언
• 외곽 클래스의 모든 멤버들을 사용할 수 있는 클래스
• ex) Map을 구현하는 클래스의 Entry
• instance field에 접근 불가
• private static 멤버 클래스는 외곽 클래스가 나타내는 객체의 컴포넌
트들을 표현하는데 주로 사용
public abstract class AbstractMap<K,V> implements Map<K,V> {
…
public static class SimpleEntry<K,V>
implements Entry<K,V>, java.io.Serializable{ … }
}
static이 아닌 멤버 클래스
• static이 아닌 멤버 클래스의 인스턴스는 자신의 외곽 클래스의 인스
턴스가 있어야만 생성할 수 있다.
• instance field에 접근 가능
• 해당 클래스가 public이나 private이라면 향후 배포판의 바이너리 수
준 호환성을 위해 static과 static이 아닌 클래스를 선택하는 것이 중요
하다.
• 외곽 클래스의 인스턴스를 사용할 필요가 없는 멤버클래스를 선언한
다면 static 멤버 클래스로 만들자.
익명 클래스
• 선언된 곳에서만 인스턴스를 생성
• instanceof 연산자 사용 불가
• 익명 클래스의 클라이언트는 그 클래스의 어떤 멤버 메소드도 호출
불가
• 함수 객체를 생성하는데 많이 사용됨
지역 클래스
• 제일 적게 사용되는 inner class
• {}로 둘러쌓인 메소드나 블록 어디든 선언될 수 있다.
• 지역변수와 동일한 유효범위를 가짐
• 이름을 가질 수 있어 반복적으로 사용가능
• 익명 클래스처럼 외곽 인스턴스를 가지며 static 멤버 포함 불가
• 가독성을 위해 가급적 코드 길이가 짧아야 함
요약.
• nested class (inner class)
– inner class, static inner class, anonymous class, local class
• 메소드 내부에 두기 적합하지 않다면 → 멤버 클래스
• 멤버 클래스의 각 인스턴스가 외곽 클래스의 인스턴스를 참조할 필요가 있다
면 static이 아닌 멤버 클래스, 그렇지 않다면 static 멤버 클래스
• 클래스가 어떤 메소드 내부에 속하고, 한 곳에서만 인스턴스를 생성하고 그
클래스의 특성을 나타내는 타입이 존재하면 익명 클래스, 그렇지 않으면 지역
클래스

More Related Content

PDF
클린 코드 part2
PDF
Swift5 vs objective c
PPTX
Swift 0x18 access control
PDF
[Swift] Singleton
PDF
Effective C++ Chapter 2 Summary
PPTX
15 swift 클래스
PPTX
item15. 가변성을 최소화하자
PPTX
17 swift 프로토콜
클린 코드 part2
Swift5 vs objective c
Swift 0x18 access control
[Swift] Singleton
Effective C++ Chapter 2 Summary
15 swift 클래스
item15. 가변성을 최소화하자
17 swift 프로토콜

Similar to Item 22. static 멤버 클래스를 많이 사용하자 (20)

PDF
Java_09 이너클래스
PDF
Java inner class
PPT
자바스터디(6기) 4
PDF
Java 강의자료 ed11
PPTX
Effective c++ 정리 chapter 4
PPTX
자바스터디 2
PPTX
이것이 자바다 Chap. 6 클래스(CLASS)(KOR)
PPTX
Java mentoring of samsung scsc 2
PDF
08장 객체와 클래스 (기본)
PPTX
Java, android 스터티3
PPTX
[HaU] 신입 기술 면접 준비 java
PPTX
Java, android 스터티2
PDF
5장 객체와클래스
PDF
9 object class
PPTX
Effective c++chapter4
PDF
Yapp a.a study 2 reflection+annotation
PPT
자바스터디(6기) 3
PDF
Java_05 class
PDF
Java class
PPTX
객체지향 프로그래밍 기본
Java_09 이너클래스
Java inner class
자바스터디(6기) 4
Java 강의자료 ed11
Effective c++ 정리 chapter 4
자바스터디 2
이것이 자바다 Chap. 6 클래스(CLASS)(KOR)
Java mentoring of samsung scsc 2
08장 객체와 클래스 (기본)
Java, android 스터티3
[HaU] 신입 기술 면접 준비 java
Java, android 스터티2
5장 객체와클래스
9 object class
Effective c++chapter4
Yapp a.a study 2 reflection+annotation
자바스터디(6기) 3
Java_05 class
Java class
객체지향 프로그래밍 기본
Ad

More from Sungho Moon (7)

PPTX
Item 33 서수 인덱스 대신 EnumMap을 사용하자.
PPTX
Item 30 int 상수 대신 enum을 사용하자
PPTX
Item 26. 제네릭 타입을 애용하자
PPTX
Item 24. 컴파일 경고 메시지가 없게 하자
PPTX
Item 19. 타입을 정의할 때만 인터페이스를 사용하자.
PPTX
Item10. toString 메소드는 항상 오버라이드 하자
PPTX
item12. Comparable 인터페이스의 구현을 고려하자
Item 33 서수 인덱스 대신 EnumMap을 사용하자.
Item 30 int 상수 대신 enum을 사용하자
Item 26. 제네릭 타입을 애용하자
Item 24. 컴파일 경고 메시지가 없게 하자
Item 19. 타입을 정의할 때만 인터페이스를 사용하자.
Item10. toString 메소드는 항상 오버라이드 하자
item12. Comparable 인터페이스의 구현을 고려하자
Ad

Item 22. static 멤버 클래스를 많이 사용하자

  • 1. Item 22. static 멤버 클래스를 많이 사용하자. Chapter 4. 클래스와 인터페이스
  • 2. nested class(inner class) • static 멤버 클래스 • static이 아닌 멤버 클래스 • 익명 클래스 • 지역 클래스
  • 3. static 멤버 클래스 • 다른 클래스의 static 멤버로 선언 • 외곽 클래스의 모든 멤버들을 사용할 수 있는 클래스 • ex) Map을 구현하는 클래스의 Entry • instance field에 접근 불가 • private static 멤버 클래스는 외곽 클래스가 나타내는 객체의 컴포넌 트들을 표현하는데 주로 사용 public abstract class AbstractMap<K,V> implements Map<K,V> { … public static class SimpleEntry<K,V> implements Entry<K,V>, java.io.Serializable{ … } }
  • 4. static이 아닌 멤버 클래스 • static이 아닌 멤버 클래스의 인스턴스는 자신의 외곽 클래스의 인스 턴스가 있어야만 생성할 수 있다. • instance field에 접근 가능 • 해당 클래스가 public이나 private이라면 향후 배포판의 바이너리 수 준 호환성을 위해 static과 static이 아닌 클래스를 선택하는 것이 중요 하다. • 외곽 클래스의 인스턴스를 사용할 필요가 없는 멤버클래스를 선언한 다면 static 멤버 클래스로 만들자.
  • 5. 익명 클래스 • 선언된 곳에서만 인스턴스를 생성 • instanceof 연산자 사용 불가 • 익명 클래스의 클라이언트는 그 클래스의 어떤 멤버 메소드도 호출 불가 • 함수 객체를 생성하는데 많이 사용됨
  • 6. 지역 클래스 • 제일 적게 사용되는 inner class • {}로 둘러쌓인 메소드나 블록 어디든 선언될 수 있다. • 지역변수와 동일한 유효범위를 가짐 • 이름을 가질 수 있어 반복적으로 사용가능 • 익명 클래스처럼 외곽 인스턴스를 가지며 static 멤버 포함 불가 • 가독성을 위해 가급적 코드 길이가 짧아야 함
  • 7. 요약. • nested class (inner class) – inner class, static inner class, anonymous class, local class • 메소드 내부에 두기 적합하지 않다면 → 멤버 클래스 • 멤버 클래스의 각 인스턴스가 외곽 클래스의 인스턴스를 참조할 필요가 있다 면 static이 아닌 멤버 클래스, 그렇지 않다면 static 멤버 클래스 • 클래스가 어떤 메소드 내부에 속하고, 한 곳에서만 인스턴스를 생성하고 그 클래스의 특성을 나타내는 타입이 존재하면 익명 클래스, 그렇지 않으면 지역 클래스