黑马程序员技术交流社区

标题: 为什么枚举类里面可以定义抽象方法? [打印本页]

作者: 奋斗的小胖子    时间: 2014-2-27 15:17
标题: 为什么枚举类里面可以定义抽象方法?
如题?为什么枚举类里面定义个抽象方法,类名前面不需要加abstract 修饰?
作者: kira    时间: 2014-2-28 13:20
因为枚举是个特殊的类 但他又不是类 它是JDK1.5后出现的一种新机制
枚举也好 注解也好 他们的字节码 实际上是同一类 你可以把枚举看成类似接口的东西
它里面只是实现了抽象方法 和接口不同的是枚举里面要定义具体的实例对象 比如星期
可以定义7个具体对象 从而调用一个叫做nextDay方法
类似的情况在枚举里也有出现
而且注解里属性 也能调用枚举 比如
  1. import java.lang.annotation.ElementType;
  2. import java.lang.annotation.Retention;
  3. import java.lang.annotation.RetentionPolicy;
  4. import java.lang.annotation.Target;

  5. import com.XXX.EnumTest.TrafficLamp;

  6. @Retention(RetentionPolicy.RUNTIME)//这个地方就是注解上面加注解 这种注解也称为元注解
  7. @Target({ElementType.METHOD,ElementType.TYPE})//表示这个注解只能在方法上用
  8. public @interface anniton {
  9.         String color() default "blue";//指定一个默认的颜色
  10. String value();
  11. int[] arrayArr() default {1,2,3};//加一个数组属性
  12. EnumTest.TrafficLamp lamp() default TrafficLamp.RED ;//枚举的默认值是它的一个实例对象
  13. Metaan anarr() default @Metaan("xxx");//返回值类型是一个注解
  14. }
复制代码

作者: 午夜b'Boy    时间: 2014-2-28 23:22
枚举可以有抽象方法,每个枚举值都要复写抽象方法




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2