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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© py强子 中级黑马   /  2013-8-4 10:11  /  1692 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

如果一个枚举中有抽象方法,
那么这个枚举需要抽象吗?
public enum TrafficLamp
{
      RED, GREEN,  YELLOE;
       public abstract TrafficLamp nextLamp();
}

评分

参与人数 1技术分 +1 收起 理由
神之梦 + 1 神马都是浮云

查看全部评分

5 个回复

倒序浏览
在我的印象中是不需要的
回复 使用道具 举报
本帖最后由 天地有我 于 2013-8-4 12:12 编辑

枚举类型中是可以定义抽象方法的,首先要清楚枚举类,枚举类比较特殊,枚举类中定义的每一个属性(默认是 public final static )都是枚举类型的一个实例(对象),而枚举类就是Class,是一个不可以被继承的final类,所以枚举类型既不可以被继承,也不可以被实现。但是枚举类和其它类一样可以继承普通类,抽象类,实现接口。所以当在枚举类中定义了抽象方法,而一个抽象类中的抽象方法必须被子类所复写,而枚举类不能被继承,但是枚举类中的每一属性都是枚举类的一个对象,所以在枚举类中定义了抽象方法的话,必须要在枚举类中的属性中复写定义在枚举类中的抽象方法。

public enum TrafficLamp
{
        RED
        {
                public TrafficLamp nextLamp()
                {
                        return RED;
                }
        },
        GREEN
        {
                public TrafficLamp nextLamp()
                {
                        return GREEN;
                }
        },
        YELLOE
        {
                public TrafficLamp nextLamp()
                {
                        return YELLOE;
                }
        };
        public abstract TrafficLamp nextLamp();
        
        //测试
        public static void main(String[] args)
        {
                System.out.println(TrafficLamp.GREEN.nextLamp());
        }
}

程序运行结果为,方法返回值:GREEN

评分

参与人数 1技术分 +2 收起 理由
神之梦 + 2 很给力!

查看全部评分

回复 使用道具 举报
天地有我 发表于 2013-8-4 12:08
枚举类型中是可以定义抽象方法的,首先要清楚枚举类,枚举类比较特殊,枚举类中定义的每一个属性(默认是 pu ...

够详细,谢啦!
回复 使用道具 举报
没事,大家相互交流共同进步。
回复 使用道具 举报
天地有我 发表于 2013-8-4 12:08
枚举类型中是可以定义抽象方法的,首先要清楚枚举类,枚举类比较特殊,枚举类中定义的每一个属性(默认是 pu ...

但是枚举类和其它类一样可以继承普通类,抽象类,实现接口。貌似不正确吧枚举类默认继承java.lang.Enum类,又java不支持多继承所以不能继承吧
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马