열거형 (enums)

roglog·2021년 7월 15일
0

java의 정석

목록 보기
35/36

1. 열거형이란?


  • 서로 관련된 상수를 편리하게 선언하기 위한 것
    여러 상수를 정의할 때 사용하면 유용
  • 자바의 열거형은 타입에 안전한 열거형임
  • 상수는 값이 바뀌면 해당 상수를 참조하는 모든 소스를 다시 컴파일해야 하지만 열거형 상술르 사용하면 다시 컴파일하지 않아도 됨

2. 열거형의 정의와 사용


  • 정의
    enum 열거형이름 { 상수명1, 상수명2, ... }
  • 사용
    열거형이름.상수명
  • '=='을 사용할 수 있지만 '<', '>'와 같은 비교연산자는 사용불가(ComperTo()는 사용가능)
  • case문에서 열거형의 이름을 사용할 때는 열거형 이름은 적지 않고 상수명만 적어야 함

3. 열거형에 멤버 추가하기


  • 열거형 상수를 지정해주고 싶으면 이름 옆에 원하는 값을 괄호와 함께 적어주면 됨
    enum Direction { EAST(1), SOUTH(5), WEST(-1), NORTH(10) };
  • 지정된 값을 저장할 수 있는 인스턴스 변수와 생성자를 새로 추가해 주어야 함
  • 열거형의 객체를 생성할 수 없음
    열거형의 생성자는 제어자가 묵시적으로 private이기 때문
  • 하나의 열거형 상수에 여러 값을 지정할 수도 있음
    enum Direction { EAST(1, ">"), SOUTH(5, "<"), WEST(-1, "-"), NORTH(10, "+") };
  • 열거형 추상 메서드 예제
    enum Trasportation {
        BUS(100) { int fare(int distance) { return distance*BASIC_FARE;}},
        TRAIN(150) { int fare(int distance) { return distance*BASIC_FARE;}};

        protected final int BASIC_FARE; // protected로 해야 각 상수에서 접근 가능

        Transportation(int basicFare) {
            BASIC_FARE = basicFare;
        }

        public int getBasicFare() { return BASIC_FARE; }

        abstract in fare(int distance); // 추상메서드 (모든 열거형상수가 다 구현해야 함)
    }

java의 정석 chapter12

profile
Full Stack Developer 📚

0개의 댓글