黑马程序员技术交流社区

标题: 带上了抽象方法的enum枚举,前面为什么不能加abstract修饰符 [打印本页]

作者: 目标    时间: 2014-3-19 15:50
标题: 带上了抽象方法的enum枚举,前面为什么不能加abstract修饰符
  1. 带上了抽象方法的enum枚举,前面为什么没有加abstract修饰符。
  2.         public enum TrafficLamp{
  3.                 RED{
  4.                         public TrafficLamp nextlamp(){
  5.                                 return GREEN;
  6.                         }
  7.                         
  8.                 },GREEN{
  9.                         public TrafficLamp nextlamp(){
  10.                                 return YELLOW;
  11.                         }
  12.                 },YELLOW{
  13.                         public TrafficLamp nextlamp(){
  14.                                 return RED;
  15.                         }
  16.                 };
  17.                 public abstract TrafficLamp nextlamp();
  18.         }
复制代码
就是这样规定的,还是怎么回事?求解答

作者: just_nnnnx    时间: 2014-3-19 16:50
zengming13 发表于 2014-3-19 16:20
因为枚举的父类是Enum,而Enum类被abstract修饰
public abstract class Enum

枚举不能new对象,是因为枚举的构造函数是private的,跟枚举的成员是对象没mao盾吧。正因为有了枚举的构造函数是私有的,子类不能访问枚举的构造函数,所以不能继承啊
作者: 75100313    时间: 2014-3-19 19:24
本帖最后由 75100313 于 2014-3-19 19:35 编辑

enum是一个特定的类型,

所有的枚举都是类java.lang.Enum的隐试子类



作者: just_nnnnx    时间: 2014-3-20 09:45
zengming13 发表于 2014-3-19 16:20
因为枚举的父类是Enum,而Enum类被abstract修饰
public abstract class Enum

抽象类不一定要有抽象方法,设定为抽象类只是为了不能被实例化,但有抽象方法一定要加abstract




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