static, final, enum: 공유 규칙과 변하지 않는 값 표현하기
13강. static, final, enum: 공유 규칙과 변하지 않는 값 표현하기
1. 이번 강의에서 해결할 문제
모드 이름과 최대 점수를 문자열·숫자로 여러 곳에 반복하면 오타와 규칙 불일치가 생깁니다. 공유 규칙과 가능한 값을 한곳에 정의해야 합니다.
2. 학습 목표
3. 핵심 개념
static 멤버는 클래스에 하나만 존재해 모든 인스턴스가 공유합니다. final 변수는 다시 대입할 수 없고 static final 상수는 UPPER_SNAKE_CASE를 사용합니다. enum은 허용 가능한 값 집합을 타입으로 제한하며 각 값에 동작과 데이터를 둘 수 있습니다.
4. 단계별 실습
1. src/RulesDemo.java 작성
실행 환경: 코드 편집기
실행 위치: C:\dev\game-records
실행 전 확인: 같은 이름의 기존 파일이 있다면 덮어쓰기 전에 Git diff와 이번 강의 변경 범위를 확인합니다.
대상 파일: src/RulesDemo.java
enum GameMode {
CASUAL(50), RANKED(200);
private final int bonus;
GameMode(int bonus) { this.bonus = bonus; }
int bonus() { return bonus; }
}
public class RulesDemo {
private static final int MAX_SCORE = 10_000;
public static void main(String[] args) {
GameMode mode = GameMode.RANKED;
int baseScore = 1_300;
int finalScore = Math.min(baseScore + mode.bonus(), MAX_SCORE);
System.out.println(mode + " 최종 점수: " + finalScore);
}
}
2. PowerShell에서 컴파일·실행
실행 환경: Windows PowerShell
실행 위치: C:\dev\game-records
실행 전 확인: java -version과 javac -version이 선택한 LTS JDK를 가리키고, 소스 파일명이 public 클래스명과 일치하는지 확인합니다.
대상: 이 강의의 .java 파일, out의 class 파일과 명시된 출력 파일
Set-Location C:\dev\game-records
javac -d out .\src\RulesDemo.java
java -cp out RulesDemo
예상 결과: RANKED enum의 200 보너스가 적용된 최종 점수가 출력됩니다.
5. 코드가 동작하는 이유
GameMode은 CASUAL 또는 RANKED만 허용하므로 임의 문자열 오타가 컴파일 단계에서 사라집니다. MAX_SCORE는 모든 객체가 공유하는 변경 불가 규칙입니다.
6. 자주 하는 실수와 해결법
7. 직접 실습
8. 이해 점검 질문 3개
9. 핵심 요약
static, final, enum: 공유 규칙과 변하지 않는 값 표현하기 미니 퀴즈
선택 즉시 정답과 해설을 확인할 수 있습니다. 결과는 이 브라우저에만 저장됩니다.
학습을 마쳤나요?
직접 실습과 점검 질문까지 확인한 뒤 완료로 표시하세요.