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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© java—family 中级黑马   /  2014-8-20 12:26  /  1188 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

枚举 因为不能New 枚举的实力,所以枚举不能继承其他类,也不能被其他类继承。
在枚举定义一个抽象方法,元素去实现,那么元素是枚举的子类吗?
有没有人能详细讲一下。

1 个回复

倒序浏览
枚举类(enum):        枚举类一般作为内部类使用,枚举类的成员(可以看做)是枚举类的一个对象;这些对象都默认的被public static final修饰
                                        枚举成员调用方式:类名.成员名(和静态成员一样的!)
                                当枚举类被使用到的时候,会加载枚举类的所有成员,每个成员都会调用默认的构造函数
                                        (当成员后面有小括号加入参数时,调用对应的构造函数);
                                枚举类可以内部自定义抽象函数实现相关功能,比如返回下一个成员等;这样就可以在每个成员后面定义每个成员的抽象函数的功能
                                        这些成员实际上就是枚举类的子类对象!
                                枚举类的成员必须放置在枚举类内部的第一行,成员间通过,分隔!成员和其他函数用过;分隔!
                       
                最简单的枚举类;
                        public num WeekDay{ SUN,MON}//SUN就是WeekDay的一个实例对象
               复杂的枚举类:
                        public enum TrafficLamp{
                                /*New子类的实例对象 匿名内部类!,并调用父类的有参构造函数*/
                                RED(30){//RED就相当于是枚举类TrafficLamp的一个子类
                                public TrafficLamp nextLamp() {                               
                                        return GREEN;
                                        }                       
                                },
                                GREEN(45){                               
                                        public TrafficLamp nextLamp() {                               
                                                return YELLOW;
                                        }
                                },
                                YELLOW(5){                       
                                        public TrafficLamp nextLamp() {                                       
                                                return RED;
                                        }               
                                };
                                private int time;
                                private TrafficLamp(int time){
                                        this.time=time;
                                }
                                public abstract TrafficLamp nextLamp();//枚举类的抽象方法       
                                }

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马