A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© adamjy 中级黑马   /  2014-4-22 01:35  /  1460 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 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. }
复制代码

3 个回复

倒序浏览
这也是我想知道的问题。
回复 使用道具 举报
Mr.飞碍特 来自手机 山林野马 2014-4-22 08:29:59
藤椅
使用enum定义的枚举类默认继承了java.lang.Enum类,而不是继承Object类。其中java.lang.Enum类实现了java.lang.Serializable和java.lang.Comparable两个接口。包含抽象方法的枚举类:
枚举类里定义抽象方法时无需显示使用abstract关键字将枚举类定义成抽象类,但因为枚举类需要显示创建枚举值,而不是作为父类,所以定义每个枚举值时必须为抽象方法提供实现,否则将出项编译错误,所以说不是没有,而是无需显示。
回复 使用道具 举报
我觉得,枚举如果有元素的话,那么就相当于创建了对象,创建对象的前提该类是非抽象的,所以必须覆盖掉抽象方法,覆盖掉抽象方法后,就不用在把枚举描述抽象了。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马