본문 바로가기

카테고리 없음

Enum

열거형의 이해

enum Direction { EAST, SOUTH, WEST, NORTH }
  • 사실은 열거형 상수 하나하나가 Direction 객체이다.
class Direction {
    static final Direction EAST  = new Direction("EAST");
    static final Direction SOUTH = new Direction("SOUTH");
    static final Direction WEST  = new Direction("WEST");
    static final Direction NORTH = new Direction("NORTH");
    
    private String name;
    
    private Direction(String name) {
    	this.name = name;
    }
}

열거형에 추상 메서드

enum Transportation {
    BUS(100) {
    	int fare(int distance) { return distance * BASIC_FARE; }
    },
    TRAIN(150) {
    	int fare(int distance) { return distance * BASIC_FARE; }
    },
    SHIP(100) {
    	int fare(int distance) { return distance * BASIC_FARE; }
    },
    AIRPLAIN(300) {
    	int fare(int distance) { return distance * BASIC_FARE; }
    };
    
    abstract int fare(int distance);    // 거리에 따른 요금을 계산하는 추상 메서드
    protected final int BASIC_FARE;     // protected로 해야 각 상수에서 접근 가능
    
    Transportation(int basicFare) {
    	BASIC_FARE = basicFare;
    }
    
    public int getBasicFare() { return BASIC_FARE; }
}