열거 타입의 확장은 불가능? 열거 타입은 활용하기 좋지만 확장할 수 없다는 단점이 있다. 쉽게 말해서 Enum 타입은 상속이 불가능하다. 사실 대부분의 상황에서 열거 타입을 확장하는 것은 좋지 않은 생각이다. 열거 타입은 원소들을 순회할 수 있는데 기반 타입과 확장 타입을 모두 순회하는 방법도 마땅치 않다. 열거 타입은 인터페이스를 구현할 수 있다. 열거 타입을 상속받는 것은 불가능하다. 하지만 열거 타입이 인터페이스를 구현하는 것은 가능하다. 상위 인터페이스를 정의하고 이를 확장한 여러 열거 타입으로 유연하게 여러 열거 타입 구현체를 사용할 수 있다. 아래는 체스 미션에서 사용한 인터페이스와 열거 타입을 사용한 예시이다. 체스 미션에서 활용한 방향 열거 타입 체스 기물인 킹, 퀸, 폰, 룩, 비숍, 나..
Enum
자바의 Enum은 다양한 일을 할 수 있다. 예전 포스팅에서도 설명했지만 Enum은 당수 상수 모음이 아니라 고차원의 추상 개념을 완벽히 표현할 수 있을 뿐 아니라 각 상수 데이터와 연결 지어 다양한 일을 할 수 있다. 여러분은 Enum을 사용해 if문을 제거할 수 있나요? 예전에 수업에서 코치가 한 말이다. 당시에는 무슨 의미인지 정확히 몰랐지만 미션을 진행하다 아 이렇게 if 분기문을 없앨 수 있구나 깨달은 적이 있었다. 오늘은 우아한테크코스 블랙잭 미션에서 Enum을 어떻게 활용했는지 포스팅하고자 한다. 블랙잭 결과 도출 규칙 딜러와 플레이어가 대결해서 카드패의 숫자 합이 21을 넘지 않으면서 높으면 승리하는 게임 승리 조건 블랙잭 : 처음 받은 2장의 카드가 21이면 블랙잭이라고 한다. 블랙잭일 ..
자바가 열거 타입을 지원하기 전 로또의 등수를 표현한다고 가정해보자. 열거 타입을 쓸 수 없다면 다음과 같이 표현할 수 있을 것이다. public static final int LOTTO_RANK_FIRST = 1; public static final int LOTTO_RANK_SECOND = 2; public static final int LOTTO_RANK_THRID = 3; public static final int LOTTO_RANK_FOURTH = 4; public static final int LOTTO_RANK_FIFTH = 5; public static final int LOTTO_RANK_NOTHING = 0; 1등은 정수 1로, 5등은 5로, 꽝은 0으로 정수를 열거하여 작성했다. 이렇..