
연관된 상수들의 집합을 나타내는 특별한 데이터 유형이다.
public enum 계절 {
봄,
여름,
가을,
겨울,
}
열거형은 컴파일 시점에 타입 검사를 받습니다. 따라서 올바르지 않은 상수 값이 사용되는 경우 컴파일러가 경고를 발생시키기 때문에 안정성이 있는거 같다.
열거형을 사용하면 코드의 가독성이 향상됩니다. 예를 들어, Day.SUNDAY와 같은 구문은 해당 상수가 어떤 의미를 가지는지 명확하게 드러내기 때문에 가독성이 좋다!
열거형은 클래스처럼 메서드, 생성자 등을 가질 수 있어서 좀 더 복잡한 동작을 정의할 수 있어서 유연하다.
Enum은 사전에 정의된 상수의 제한된 집합을 허용하므로, 다른 상수 값이 사용되는 것을 방지해 한정적이라 할수 있다.
public class EnumEx {
public enum 계절 {
봄, 여름, 가을, 겨울
}
public static void main(String[] args) {
계절 today = 계절.봄;
System.out.println("오늘은 " + today);
}
}
final은 변수, 메서드 또는 클래스에 대해 다방면으로 사용되는데 어디에 붙냐에 따라 조금은 다른거 같다
변수에 대한 final: 변수에 final 키워드를 사용하면 해당 변수는 한 번만 할당 한마디로 한 번 초기화된 후에는 값을 변경할 수 없다.
메서드에 대한 final: 메서드에 final 키워드를 사용하면 해당 메서드는 하위 클래스에서 오버라이딩이 되지 않았다 = 하위 클래스에서 해당 메서드를 변경할 수 없음.
클래스에 대한 final: 클래스에 final 키워드를 사용하면 해당 클래스는 상속되지 않았다 = 다른 클래스에서 이 클래스를 extend 할 수 없다.
final class DJ{
public final void drop(){
final String theBeat = "쿵쿵따";
};
}
위의 enum 클래스의 하나를 똑 때어 내면 final이라고 생각한다
그래서 장점도 위의 장점을 그대로 따라가는 것 같다.
그 대신 여러가지 힘든 점도 있었는데
변수에 대한 final은 선언과 동시에 초기화되어야 했고
메서드에 대한 final은 하위 클래스에서 재정의될 수 없기 때문에 하위 클래스에서 비슷한 다른 기능인데 수정이 조금 되어야 될때 할수가 없는점
클래스에 대한 final은 상속이 불가능하기 때문에 크게 확장이 안되는 점이 느껴졌다.
오늘은 상수에 관련된 2가지 키워드를 생각해서 좀 알아보는 시간을 가졌다.
여태 상수를 잘 써먹지 않았어서 어떻게 적용을 시켜야 될지는 연습만이 해결해줄것이다.
다음에는 이것을 이용해서 여태 했던것들을 상수로 변형시켜본다던지 새롭게 프로젝트 하나를 만들어 보는 시간을 가져야 겠다.