2011-04-07 5 views
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의 프로그램으로 다음과 같은 옵션과 질문이 있습니다. 내가 이클립스에서 이것을 실행하려고했을 때, 정적이 아닌 등급은 정적 인 컨텍스트에서 액세스 할 수 없다는 것을 컨셉에 따라 생각한다고 생각하지만, 혼란 스럽습니다. 뼈대 책은 쓰거나 나 ... 재생합니다.scjp enum에 관한 질문

(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; 

문제는 gradeprivate로 선언되어있다. 그래서 grade은 서브 클래스에서 액세스 할 수 없습니다. gradeScale2의 하위 클래스 또는 하위 클래스에서 액세스 할 수 있어야하며 grade에서 super.getGrade()까지의 메서드에 액세스해야합니다.

// (1) INSERT CODE HERE 
public char getGrade() { return grade; } // inserted! 
당신은 당신의 게시물에 가능성이있는 올바른 코드를 삽입 한

는,이 책은 잘못된 것입니다.

+0

좋은 설명 주셔서 감사합니다. – yagnya