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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

public class Enum
{
        public enum  TrafficLamp // 内部类是有 4个修饰符的。
        {  //  内部类    例如: new Date(500){}  子类构造方法 调用父类Date的有参构造函数。
                RED(30){
//表示new子类的对象,并且调用父类的构造方法,然后用RED作为该子类对象的引用。
                        public TrafficLamp nextLamp()
                        {
                                return  GREEN;
                        }
                       
                },
                GREEN(45){
                        public TrafficLamp nextLamp()
                        {
                                return  YELLOW;// 绿灯之后是黄灯。警告我们别再冲刺了。
                        }
                       
                },
                YELLOW(5){
                        public TrafficLamp nextLamp()
                        {
                                return  RED; // 幻灯之后是红灯。
                        }
                       
                };
                public abstract TrafficLamp nextLamp() ;
                private int time;
                private TrafficLamp(int time)
                {
                        this.time = time;
                }
               
        }
       
        public static void  main(String []  args)
          {
               
                  TrafficLamp tl= TrafficLamp.GREEN; //定义一个枚举对象tl;
                  System.out.println(tl);
                  System.out.println(tl.nextLamp());
                  
          }
}
问题纠结在TrafficLamp tl= TrafficLamp.GREEN; //定义一个枚举对象tl;
此处的t1, 是TrafficLamp的对象还是 TrafficLamp 子类的对象?
也就等同于 枚举元素由内部类实现后,TrafficLamp.GREEN是一个TrafficLamp的对象还是一个 TrafficLamp子类的对象?  我思考是后面有 t1.nextLamp() 的调用,而nextLamp()是一个父类的抽象方法,只能有子类实现,调用,所以t1 是TrafficLamp子类的对象,TrafficLamp.GREEN 得到的TrafficLamp元素 GREEN已经成为了TrafficLamp子类的对象的引用。  求大虾们 ,指点江上,激扬文字。
       
          
          

评分

参与人数 1技术分 +1 收起 理由
王德升 + 1 赞一个!

查看全部评分

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马