Item 19.
타입을 정의할 때만 인터페이스를 사용하
자.
Chapter 4. 클래스와 인터페이스
Interface?
• 클래스가 구현하는 인터페이스는 클라이언트가 그 클래
스의 인터페이스로 할 수 있는 일을 나타낸다.
Constant interface?
• 메소드를 갖지 않고, 외부에 제공하는 상수 값을 갖는
static final 필드만으로 구성된다.
• Constant interface를 구현하는 클래스에서 상수 필드 앞
에 별도의 클래스 이름을 붙이지 않고 사용하기 위해 구현
한다.
Constant interface?
// Constant interface
public interface PhysicalConstants {
// 아보가드로 수
static final double AVOGADROS_NUMBER = 6.012414e23;
// 볼쯔만 상수
static final double BOLTZMANN_CONSTANT = 1.14214e-14;
// 전자 질량
static final double ELECTRON_MASS = 9.1514e-31;
}
Constant interface?
• 상세 구현이(상수가) 클래스 외부로 노출됨
• 상수가 필요 없어지더라도 binary 호환성을 유지하기 위
해 그 상수 interface를 유지
• subclass에서 상수 이름과 같은 이름의 변수 이용 못함
상수를 외부로 제공하는 방법
• 상수가 기존클래스나 인터페이스와 밀접하게 관계 된다
면
– 해당 클래스나 인터페이스에 추가
ex) Integer나 Double의 MIN_VALUE, MAX_VALUE
• 열거타입의 멤버가 되는 것이 좋은 지 고려(enum)
• 유틸리티 클래스에 상수를 둠
상수를 외부로 제공하는 방법
• 유틸리티 클래스에 상수를 둠
public class PhysicalcontantsUClass {
private PhysicalcontantsUClass() {
} // 인스턴트 생성 방지
static final double AVOGADROS_NUMBER = 6.012414e23;
static final double BOLTZMANN_CONSTANT = 1.14214e-14;
static final double ELECTRON_MASS = 9.1514e-31;
}
public class Test {
public static void main(String[] arg){
double boltzmann =
PhysicalcontantsUClass.BOLTZMANN_CONSTANT;
double avogadros =
PhysicalcontantsUClass.AVOGADROS_NUMBER;
double electron = PhysicalcontantsUClass.ELECTRON_MASS;
}
}
상수를 외부로 제공하는 방법
• 유틸리티 클래스에 상수를 둠
public class PhysicalcontantsUClass {
private PhysicalcontantsUClass() {
} // 인스턴트 생성 방지
static final double AVOGADROS_NUMBER = 6.012414e23;
static final double BOLTZMANN_CONSTANT = 1.14214e-14;
static final double ELECTRON_MASS = 9.1514e-31;
}
import static test.PhysicalcontantsUClass.*;
public class Test {
public static void main(String[] arg){
double boltzmann = BOLTZMANN_CONSTANT;
double avogadros = AVOGADROS_NUMBER;
double electron = ELECTRON_MASS;
}
}
요약
• 상수를 외부에 제공하기 위해 사용하면 안
됨.
• 즉, 인터페이스는 타입을 정의할 때만 사용.

More Related Content

PPTX
Item 24. 컴파일 경고 메시지가 없게 하자
PPTX
Item10. toString 메소드는 항상 오버라이드 하자
PPTX
item15. 가변성을 최소화하자
PPTX
Item 26. 제네릭 타입을 애용하자
PPTX
Item 30 int 상수 대신 enum을 사용하자
PPTX
Item 33 서수 인덱스 대신 EnumMap을 사용하자.
PPTX
item12. Comparable 인터페이스의 구현을 고려하자
PDF
상속과 구현
Item 24. 컴파일 경고 메시지가 없게 하자
Item10. toString 메소드는 항상 오버라이드 하자
item15. 가변성을 최소화하자
Item 26. 제네릭 타입을 애용하자
Item 30 int 상수 대신 enum을 사용하자
Item 33 서수 인덱스 대신 EnumMap을 사용하자.
item12. Comparable 인터페이스의 구현을 고려하자
상속과 구현

Similar to Item 19. 타입을 정의할 때만 인터페이스를 사용하자. (20)

PPTX
[HaU] 신입 기술 면접 준비 java
PPT
자바스터디(6기) 4
PPTX
Effective c++chapter4
PPTX
Java, android 스터티2
PPTX
Java, android 스터티3
PPTX
Effective c++ 정리 chapter 4
PPTX
객체지향 프로그래밍 기본
PDF
C++ Advanced 강의 1주차
PPTX
[자바카페] 자바 객체지향 프로그래밍 (2017)
PPT
자바스터디(6기) 3
PPTX
Effective c++ Chapter6
PPTX
Effective c++ 정리 chapter 6
PPTX
Effective c++ chapter 7,8
PDF
Scala type args
PDF
12장 상속 (고급)
PDF
Java programming pdf
PDF
5 6 1
PDF
Java 강의자료 ed11
PPTX
Effective c++chapter1 and2
PDF
C++ Advanced 강의 5주차
[HaU] 신입 기술 면접 준비 java
자바스터디(6기) 4
Effective c++chapter4
Java, android 스터티2
Java, android 스터티3
Effective c++ 정리 chapter 4
객체지향 프로그래밍 기본
C++ Advanced 강의 1주차
[자바카페] 자바 객체지향 프로그래밍 (2017)
자바스터디(6기) 3
Effective c++ Chapter6
Effective c++ 정리 chapter 6
Effective c++ chapter 7,8
Scala type args
12장 상속 (고급)
Java programming pdf
5 6 1
Java 강의자료 ed11
Effective c++chapter1 and2
C++ Advanced 강의 5주차
Ad

Item 19. 타입을 정의할 때만 인터페이스를 사용하자.

  • 1. Item 19. 타입을 정의할 때만 인터페이스를 사용하 자. Chapter 4. 클래스와 인터페이스
  • 2. Interface? • 클래스가 구현하는 인터페이스는 클라이언트가 그 클래 스의 인터페이스로 할 수 있는 일을 나타낸다.
  • 3. Constant interface? • 메소드를 갖지 않고, 외부에 제공하는 상수 값을 갖는 static final 필드만으로 구성된다. • Constant interface를 구현하는 클래스에서 상수 필드 앞 에 별도의 클래스 이름을 붙이지 않고 사용하기 위해 구현 한다.
  • 4. Constant interface? // Constant interface public interface PhysicalConstants { // 아보가드로 수 static final double AVOGADROS_NUMBER = 6.012414e23; // 볼쯔만 상수 static final double BOLTZMANN_CONSTANT = 1.14214e-14; // 전자 질량 static final double ELECTRON_MASS = 9.1514e-31; }
  • 5. Constant interface? • 상세 구현이(상수가) 클래스 외부로 노출됨 • 상수가 필요 없어지더라도 binary 호환성을 유지하기 위 해 그 상수 interface를 유지 • subclass에서 상수 이름과 같은 이름의 변수 이용 못함
  • 6. 상수를 외부로 제공하는 방법 • 상수가 기존클래스나 인터페이스와 밀접하게 관계 된다 면 – 해당 클래스나 인터페이스에 추가 ex) Integer나 Double의 MIN_VALUE, MAX_VALUE • 열거타입의 멤버가 되는 것이 좋은 지 고려(enum) • 유틸리티 클래스에 상수를 둠
  • 7. 상수를 외부로 제공하는 방법 • 유틸리티 클래스에 상수를 둠 public class PhysicalcontantsUClass { private PhysicalcontantsUClass() { } // 인스턴트 생성 방지 static final double AVOGADROS_NUMBER = 6.012414e23; static final double BOLTZMANN_CONSTANT = 1.14214e-14; static final double ELECTRON_MASS = 9.1514e-31; } public class Test { public static void main(String[] arg){ double boltzmann = PhysicalcontantsUClass.BOLTZMANN_CONSTANT; double avogadros = PhysicalcontantsUClass.AVOGADROS_NUMBER; double electron = PhysicalcontantsUClass.ELECTRON_MASS; } }
  • 8. 상수를 외부로 제공하는 방법 • 유틸리티 클래스에 상수를 둠 public class PhysicalcontantsUClass { private PhysicalcontantsUClass() { } // 인스턴트 생성 방지 static final double AVOGADROS_NUMBER = 6.012414e23; static final double BOLTZMANN_CONSTANT = 1.14214e-14; static final double ELECTRON_MASS = 9.1514e-31; } import static test.PhysicalcontantsUClass.*; public class Test { public static void main(String[] arg){ double boltzmann = BOLTZMANN_CONSTANT; double avogadros = AVOGADROS_NUMBER; double electron = ELECTRON_MASS; } }
  • 9. 요약 • 상수를 외부에 제공하기 위해 사용하면 안 됨. • 즉, 인터페이스는 타입을 정의할 때만 사용.