关于在java中的类中定义的枚举的问题

Vas*_*sil 6 java enums

此代码取自SCJP练习测试:

 3. public class Bridge { 
 4.   public enum Suits { 
 5.     CLUBS(20), DIAMONDS(20), HEARTS(30), SPADES(30), 
 6.     NOTRUMP(40) { public int getValue(int bid) { 
                        return ((bid-1)*30)+40; } }; 
 7.     Suits(int points) {  this.points = points;  } 
 8.     private int points; 
 9.     public int getValue(int bid) { return points * bid; } 
10.   } 
11.   public static void main(String[] args) { 
12.     System.out.println(Suits.NOTRUMP.getBidValue(3)); 
13.     System.out.println(Suits.SPADES + " " + Suits.SPADES.points); 
14.     System.out.println(Suits.values()); 
15.   } 
16. } 
Run Code Online (Sandbox Code Playgroud)

在第8行points声明为私有,在第13行它被访问,所以从我可以看到我的答案将是编译失败.但是书中的答案却说不然.我在这里遗漏了什么,还是书中的拼写错误?

ste*_*heg 11

单个外部类中的所有代码都可以访问该外部类中的任何访问级别.


new*_*cct 5

为了扩展stepancheg说的话:

Java语言规范部分6.6.1"确定可访问性":

如果成员或构造函数被声明为private,则当且仅当它发生在包含成员或构造函数声明的顶级类的主体内时才允许访问.

从本质上讲,private并不意味着对这个类是私有的,它意味着对顶级类是私有的.