关于枚举的scjp问题

时间:2011-04-07 04:18:18

标签: 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 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();

1 个答案:

答案 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!

您在帖子中插入了可能正确的代码,,这本书是错误的。