public class Bridge {
   public enum Suits{
      CLUBS(20), DIAMONDS(20), HEARTS(30),SPADES(30), NOTRUMP(40){  //这个是什么鸟方法啊???
         public int getValue(int bid){
            return ((bid-1)*30)+40;
         }};
         Suits(int points){
            this.points = points;
         }
         private int points;
         public int getValue(int bid){
            return points*bid;
         }
      }
   
   public static void main(String[] args) {
      System.out.println(Suits.NOTRUMP.getValue(3));
      System.out.println(Suits.SPADES + " " + Suits.SPADES.points);   //私有成员也能访问,强的。
      System.out.println(Suits.values());
   }
}

解决方案 »

  1.   

    结果是:第一行,100。调用了NOTRUMP的getValue方法;
    第二行,SPADES 30。名字+空格+值。Suits中的成员有着和Suits一样的变量和方法。
    第三行,一个地址。values()返回的是一个数组,数组中包括Suits的5个成员。
      

  2.   

    要是不好理解,你就把Suits当做一个类名好了。
    注意是个类名,不是一个类对象。你不能写Suits.getValues(3)这样的写法。
      

  3.   

    1、2很好理解,恩,就像2楼所说把Suits看成是一个类,这里就是Bridge的一个内部类,NOTRUMP理解成一个继承自Suits的匿名内部类,重写了getValues方法
    因为是内部类,所以私有变量自然可以被访问
    values真不晓得,验证结果同1楼……
      

  4.   


    public class Bridge {
       public enum Suits{
          CLUBS(20), DIAMONDS(20), HEARTS(30),SPADES(30), NOTRUMP(40){  //定义了5个枚举成员并调用了各自的构造方法,其中NOTRUMP重写了getValue方法
              public int getValue(int bid){//被重写的getValue方法,仅供NOTRUMP使用
                return ((bid-1)*30)+40;
             }};
             Suits(int points){//Suits的构造方法
                this.points = points;
             }
             private int points;//Suits的成员变量
             public int getValue(int bid){//Suits的方法,除了NOTRUMP外其他4个枚举成员都可使用
                return points*bid;
             }
          }
       
       public static void main(String[] args) {
          System.out.println(Suits.NOTRUMP.getValue(3));//调用NOTRUMP的getValue方法
          System.out.println(Suits.SPADES + " " + Suits.SPADES.points);   //取得SPADES的points的值,初始化的时候有赋值
          System.out.println(Suits.values());//枚举类型特有方法,返回值是所有枚举成员组成的数组。
       }
    }