#java #scjp
#java #scjp
Вопрос:
public enum Scale2 {
GOOD('C') {
public char getGrade() {
return grade;
}
},
BETTER('B') {
public char getGrade() {
return grade;
}
},
BEST('A') {
public char getGrade() {
return grade;
}
};
private char grade;
Scale2(char grade) {
this.grade = grade;
}
// (1) INSERT CODE HERE
public char getGrade() {
return grade;
}
public static void main (String[] args) {
System.out.println(GOOD.getGrade());
}
}
Это программа из руководства khalid mughal scjp, и ниже приведены варианты и вопросы. Когда я попытался запустить это в eclipse, там говорилось, что нестатический класс не может получить доступ из статического контекста, я думаю, что в соответствии с концепцией это правильно, но я в замешательстве, какую книгу написать или я … пожалуйста, воспроизведите.
Какой код, вставленный в (1), заставит программу печатать C?
Выберите два правильных ответа.
(a) public char getGrade() { return grade; }
(b) public int getGrade() { return grade; }
(c) abstract public int getGrade();
(d) abstract public char getGrade();
Ответ №1:
GOOD('C')
{ public char getGrade() { return grade; } },
BETTER('B') { public char getGrade() { return grade; } },
BEST('A')
{ public char getGrade() { return grade; } };
private char grade;
Проблема с примером кода заключается в том, что он grade
объявлен как private
. so grade
недоступен из его подклассов.
Либо grade
должен быть доступен из его подклассов, либо подклассы Scale2
должны получать доступ grade
через super.getGrade()
метод.
// (1) INSERT CODE HERE
public char getGrade() { return grade; } // inserted!
Вы вставили, возможно, правильный код в свой пост, и да, книга неверна.