scjp вопрос по enum - PullRequest
       3

scjp вопрос по enum

0 голосов
/ 07 апреля 2011
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, ниже приведены варианты и вопросы. Когда я пытался запустить это в затмении, он говорит, что нестатическая оценка не может получить доступ из статического контекста, я думаю, что в соответствии с концепцией это правильно, но я не уверен, что книга написана или я ... пожалуйста, повторите.

Какой код при вводе в (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 Ответ

1 голос
/ 07 апреля 2011
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!

Вы вставили возможно правильный код в свое сообщение, и да , книга не права.

...