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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

这是为什么?
  1. package com.itcast.zhang;

  2. public  enum TrafficLamp {
  3.         // 子类的对象,每个元素都是由他的子类来写的,必须完成父类的抽象方法。
  4.         RED(30) {
  5.                 @Override
  6.                 public TrafficLamp nextLamp() {
  7.                         // TODO Auto-generated method stub
  8.                         return YELLOW;
  9.                 }
  10.         },
  11.         GREEN(30) {
  12.                 @Override
  13.                 public TrafficLamp nextLamp() {
  14.                         // TODO Auto-generated method stub
  15.                         return YELLOW;
  16.                 }
  17.         },
  18.         YELLOW(10) {
  19.                 @Override
  20.                 public TrafficLamp nextLamp() {
  21.                         // TODO Auto-generated method stub
  22.                         return RED;
  23.                 }
  24.         };
  25.         public abstract TrafficLamp nextLamp();

  26.         private int time;// 希望每个灯都有时间

  27.         private TrafficLamp(int time) {// 通过子类来调用。
  28.                 this.time = time;
  29.         }
  30. }
  31. // 枚举只有一个成员时,就可以作为一种单例的实现方式

复制代码

评分

参与人数 1技术分 +1 收起 理由
黑马伍哲沂 + 1 神马都是浮云

查看全部评分

4 个回复

倒序浏览
为什么却又有抽象方法呢?
回复 使用道具 举报
抽象方法必须定义在抽象类中,而枚举类不能是抽象的?这不是矛盾的吗?
回复 使用道具 举报
首先是枚举类的定义  枚举类:一个类的对象时有限且固定的,这种实例有限且固定的类。在java里被称为枚举类。
枚举类与普通类的区别:

      1.使用enum定义的枚举类默认继承了java.lang.Enum类,而不是继承Object类。其中java.lang.Enum类实现了java.lang.Serializable和java.lang.Comparable两个接口。

       2.枚举类的构造器只能用private修饰

      3.枚举类的所有实例必须在枚举类中显示列出,否则枚举类将永远不能产生实例,系统会自动添加public static final修饰
包含抽象方法的枚举类:

枚举类里定义抽象方法时无需显示使用abstract关键字将枚举类定义成抽象类,但因为枚举类需要显示创建枚举值,而不是作为父类,所以定义每个枚举值时必须为抽象方法提供实现,否则将出项编译错误
希望帮到你

评分

参与人数 1技术分 +1 收起 理由
黑马伍哲沂 + 1 21 加油加油。

查看全部评分

回复 使用道具 举报
因为枚举类本身就是一个抽象类,这是java本身规定的。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马