상수 또한 내부에서 사용되는 내부 정보인데, 인터페이스로 두므로서 외부에 노출되어 캡슐화가 깨지게 된다.
내부 구현을 클래스의 API로 노출하는 행위가 된다.
클라이언트에 혼란을 준다.
상수를 정의하는 방법
특정 클래스나 인터페이스
열거형
인스턴스화 할 수 없는 유틸리티 클래스
예시
상수 유틸리티 클래스
인터페이스는 implements를 막을 방법은 없으나 상속은 가능하다.
public class PhysicalConstants {
private PhysicalConstants() { } // 인스턴스화 방지
// Java 7 부터 추가된 기능: 세 자리 숫자마다 언더바를 사용해 가독성 향상 가능
// 아보가드로 수 (1/몰)
public static final double AVOGADROS_NUMBER = 6.022_140_857e23;
// 볼츠만 상수 (J/K)
public static final double BOLTZMANN_CONST = 1.380_648_52e-23;
// 전자 질량 (kg)
public static final double ELECTRON_MASS = 9.109_383_56e-31;
}
아이템 22. 인터페이스는 타입을 정의하는 용도로만 사용하라.
핵심 정리
타입을 정의
하는 것이다.예시
상수 유틸리티 클래스
implements
를 막을 방법은 없으나 상속은 가능하다.