상수 멤버 - 한 번 초기화하면 더 이상 값을 변경할 수 없는 멤버
              - 늘 같은 값만 가지기는 하지만 클래스에 소속되고 이름을 가지기때문에 수치 상수와 다르다

1)
const 상수
- 컴파일할 때 값이 딱 한번 초기화되며 실행 중에는 절대로 변경 불가
- 반드시 초기값을 지정해야한다
- 값이 없는 상수는 의미가 없다


- Date 클래스는 24라는 값을 가지는 DAY 상수 멤버를 정의한다
- DAY는 언제까지고 24라는 값만 가진다
- 상수 멤버의 액세스 지정은 거의 public 이다 (한번 초기화 하면 공개할필요없으므로)
- DAY를 외부에서 참조하려면 Date.DAY
- 상수를 참조할때는 객체가 아닌 클래스 이름으로 소속을 밝힌다
- 24라는 숫자보다 DAY라는 상수를 쓰면 하루의 시간수라는 것을 분명히 알수 있다
- 숫자라는 것은 값만 보이므로 값으로부터 의미를 알기는 어렵기 때문

상수 멤버를 쓰면 소스를 수정하고 관리하기도 쉬워진다
- 30이라는 숫자를 쓰지않고 상수 멤버로 사용하면 이 멤버만 수정하면되고
- 숫자를 사용하면 일일히 숫자를 찾아 모두 수정해야 한다

상수 멤버는 C언어의 #define으로 정의하는 매크로 상수와 유사, 효과도 비슷

const 는 메소드 내의 지역 변수에도 사용가능하다
긴 메소드에서 특정 상수가 계속 반복된다면 상수를 쓰는것 보다 지역 상수를 정의해 쓰는게 좋다


2)
readonly 읽기 전용 필드
- const와 초기화 시점이 다르다
- 생성자에서 딱 한번 값을 결정할수 있는 기회가 제공된다

const = 구워져 나오는 CD-ROM
readonly = 한번뿐이지만 원하는 데이터를 기록할수있는 CD-R





- 조폭의 두목은 조직이 만들어질때까지 한번 정해지면 끝까지 변하지 않으므로 Dumok 필드는 readonly, 생성자에서 초기화

Posted by 코딩하는 야구쟁이
,