2014년 1월 5일 일요일

[7-14] final 붙은 인스턴스 변수의 초기화

/*
[7-14] 문제 7-1 에 나오는 섯다카드의 숫자와 종류는 사실 변하면 안되는 값이다.
  이러한 문제가 안생기도록 SutdaCard 를 수정하시오. */


class SutdaCard {
final int num;
final boolean isKwang;

SutdaCard() {
this(1, true);
}

SutdaCard(int num, boolean isKwang) {
this.num = num;
this.isKwang = isKwang;
}

//info() 대신 Object클래스의 toString() 을 오버라이딩했다.
public String toString() {
return num + ( isKwang ? "K":"");
}
}


class Exercise7_1 {
public static void main(String[] args) {
SutdaDeck deck = new SutdaDeck();

for (int i=0; i < deck.cards.length; i++) {
System.out.print(deck.cards[i] + ", ");
}
}
}

/*
원래 변수 앞에 final을 붙일 때는 선언과 초기화를 동시에 해야 한다.

final int MAX_VOLUME = 100;

그러나 인스턴스변수의 경우, 선언시에 초기화 하지 않고 생성자에 초기화할 수 있다.
생성할 때 지정된 값이 변하지 않도록 할 수 있는 것이다. 상수이므로 한번 초기화한             이후로는 값을 바꿀 수 없다.

*/

댓글 없음:

댓글 쓰기