此代码取自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行它被访问,所以从我可以看到我的答案将是编译失败.但是书中的答案却说不然.我在这里遗漏了什么,还是书中的拼写错误?
为了扩展stepancheg说的话:
如果成员或构造函数被声明为private,则当且仅当它发生在包含成员或构造函数声明的顶级类的主体内时才允许访问.
从本质上讲,private并不意味着对这个类是私有的,它意味着对顶级类是私有的.
| 归档时间: |
|
| 查看次数: |
5791 次 |
| 最近记录: |