0
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();
4

1 回答 1

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访问的子类。gradesuper.getGrade()

// (1) INSERT CODE HERE
public char getGrade() { return grade; } // inserted!

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

于 2011-04-07T05:04:48.023 回答