Java枚举类

1.枚举类可以实现一个或多个接口,用enum关键字定义枚举类,默认继承java.lang.Enum类,而不是继承Object类,其中java.lang.Enum类实现了java.lang.Serializable和java.lang.Comparable两个接口。

2.枚举类的构造器只能用private访问控制符,不管是省略还是默认或者强制指定访问控制符,都必须是private。

3.枚举类的所有实例必须在类里显示列出,否则因为枚举类的构造器为private访问控制,而导致枚举类无法创建实例。这些实例默认public static final修饰,不需要显示添加。

4.所有枚举类都提供了一个values的方法,该方法可以方便的遍历所有枚举值。

5.实现接口的枚举类:

public interface GenderDesc{
      void info();
}

public enum Gender implements GenderDesc{
       MALE("nan"){
              public void info(){
                   System.out.printlin("this is male");
              }
        },
         FEMALE("nv"){
              public void info(){
                   System.out.printlin("this is female");
              }
        };
}
上面MALE、FEMALE枚举值不是Gender的实例,而是Gender的匿名子类的实例,编译源码会生成Gender.class、Gender$1.class、Gender$2.class三个class文件,说明 MALE、FEMALE是Gender的匿名子类的实例。

6.包含抽象方法的枚举类:

public enum Operation{
     PLUS{
          public double eval(double x,double y){
                return x+y;
         }
     },
     MINUS{
          public double eval(double x,double y){
                return x-y;
         }
     },
     TIMES{
          public double eval(double x,double y){
                return x*y;
         }
     },
     DIVIDE{
          public double eval(double x,double y){
                return x/y;
         }
     };
     public abstract double eval(doublex,double y);
}
编译上面源码生成5个class文件,其中包括Operation以及四个匿名内部子类的class文件

枚举类里定义抽象方法时,无需显示用abstract关键字将枚举类定义成抽象类,但定义每个枚举值时必须为所有抽象方法提供实现。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值