열거형의 이해
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; }
}