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 guid的程序,以下是选项和问题。当我试图在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();
答案 0 :(得分: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
。所以grade
无法从其子类访问。
grade
应该可以从其子类访问,或者Scale2
的子类应该通过grade
方法访问super.getGrade()
。
// (1) INSERT CODE HERE
public char getGrade() { return grade; } // inserted!
您在帖子中插入了可能正确的代码,是,这本书是错误的。