黑马程序员技术交流社区

标题: 枚举中的抽象方法 [打印本页]

作者: 黄敏    时间: 2012-8-24 11:32
标题: 枚举中的抽象方法
public enum TrafficLamp{       //这个类里面有抽象方法,这里应该定义抽象类啊,怎么不是抽象类呢?不理解
        RED(30){
            public TrafficLamp nextLamp(){
                returnGREEN;
            }
        },
        GREEN(45){
            public TrafficLamp nextLamp(){
                returnYELLOW;
            }         
        },
        YELLOW(5){
            public TrafficLamp nextLamp(){
                returnRED;
            }         
        };
        public abstract TrafficLamp nextLamp();
        privateint time;
        privateTrafficLamp(int time){this.time = time;
}




作者: 黄敏    时间: 2012-8-24 11:47
谁能给详细解答一下,希望针对问题回答
作者: 冯培军    时间: 2012-8-24 12:17
public enum TrafficLamp{       //这个类里面有抽象方法,这里应该定义抽象类啊,怎么不是抽象类呢?不理解
        RED(30){
            public TrafficLamp nextLamp(){
                returnGREEN;
            }
        },
        GREEN(45){
            public TrafficLamp nextLamp(){
                returnYELLOW;
            }         
        },
        YELLOW(5){
            public TrafficLamp nextLamp(){
                returnRED;
            }         
        };
                //这里面虽然是一个抽象的方法,依照类的习惯,那个这个类就是抽象类
                //但是你在前面定义的是枚举,里面定义的变量相当与个常量,而且这些常量
                //都现实了内部的抽象方法,好比一个工厂,我在里面创建了1,2,3,4这几个资源
                //如果你使用我,只能使用里面的1,2,3,4.没有其他的对象可言。

        public abstract TrafficLamp nextLamp();
        privateint time;
        privateTrafficLamp(int time){this.time = time;
}
你可以看看张孝祥老师的PPT,怎么写一个枚举
私有的构造方法
每个元素分别用一个公有的静态成员变量表示
可以有若干公有方法或抽象方法。采用抽象方法定义nextDay就将大量的if.else语句转移成了一个个独立的类。

作者: 黄敏    时间: 2012-8-24 12:30
冯培军 发表于 2012-8-24 12:17
public enum TrafficLamp{       //这个类里面有抽象方法,这里应该定义抽象类啊,怎么不是抽象类呢?不理 ...

你回答的不是我要问的。谢谢
作者: 黄敏    时间: 2012-8-24 14:23
竟然没人回答我
作者: 黄敏    时间: 2012-8-24 16:22
问题也解决,查了API知道了




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