пятница, 29 февраля 2008 г.

Java Puzzle 72: Final Jeopardy

Рассмотрим следующую программу. Какое поведение вы ожидаете от неё или от компилятора?
class Jeopardy {
public static final String PRIZE = "$64,000";
}
class DoubleJeopardy extends Jeopardy {
public static final String PRIZE = "2 cents";
}
public class Main extends DoubleJeopardy {
public static void main(String[] args) {
System.out.println(PRIZE);
}
}

Дело в том, что поведение модификатора final для поля и метода отличаются. Модификатор final для метода означает, что его нельзя переопределить или скрыть. А для поля он означает, что значение этого поля нельзя изменить. И всё!
Я рекомендую хранить ваши статические константы в отдельном классе. Ну а нестатические поля класса должны быть private. И не спорьте. ;)

Комментариев нет:

Отправить комментарий