黑马程序员技术交流社区

标题: 枚举类内有抽象方法的问题 [打印本页]

作者: adamjy    时间: 2014-4-22 01:35
标题: 枚举类内有抽象方法的问题
本帖最后由 adamjy 于 2014-4-22 12:36 编辑

枚举类有抽象方法,为什么枚举类不需要定义成抽象类型,代码如下
  1. public enum TrafficLamp {
  2.         RED {
  3.                 @Override
  4.                 public TrafficLamp nextLamp() {
  5.                         // TODO Auto-generated method stub
  6.                         return null;
  7.                 }
  8.         },
  9.         GREEN {
  10.                 @Override
  11.                 public TrafficLamp nextLamp() {
  12.                         // TODO Auto-generated method stub
  13.                         return null;
  14.                 }
  15.         },
  16.         YELLOE {
  17.                 @Override
  18.                 public TrafficLamp nextLamp() {
  19.                         // TODO Auto-generated method stub
  20.                         return null;
  21.                 }
  22.         };
  23.     public abstract TrafficLamp nextLamp();
  24. }
复制代码

作者: 创造命运    时间: 2014-4-22 07:57
这也是我想知道的问题。
作者: Mr.飞碍特    时间: 2014-4-22 08:29
使用enum定义的枚举类默认继承了java.lang.Enum类,而不是继承Object类。其中java.lang.Enum类实现了java.lang.Serializable和java.lang.Comparable两个接口。包含抽象方法的枚举类:
枚举类里定义抽象方法时无需显示使用abstract关键字将枚举类定义成抽象类,但因为枚举类需要显示创建枚举值,而不是作为父类,所以定义每个枚举值时必须为抽象方法提供实现,否则将出项编译错误,所以说不是没有,而是无需显示。
作者: 唐宋元明清    时间: 2014-4-22 09:18
我觉得,枚举如果有元素的话,那么就相当于创建了对象,创建对象的前提该类是非抽象的,所以必须覆盖掉抽象方法,覆盖掉抽象方法后,就不用在把枚举描述抽象了。




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