黑马程序员技术交流社区

标题: 枚举的小问题 [打印本页]

作者: 陈洋    时间: 2013-8-24 23:45
标题: 枚举的小问题
本帖最后由 forward 于 2013-8-26 21:17 编辑

public enum xxx{
    a,b,c,d
}
想问一下这个枚举类xxx是抽象的吗?还是这个类中有抽象方法了,自动变抽象类。
看高新技术遇到的问题。
作者: 陈洋    时间: 2013-8-24 23:48
度娘没有。。
作者: HM张博文    时间: 2013-8-24 23:53
如果不具体,就是抽象类,你说的abcd是啥意思,题目没写清楚哦
作者: javamov    时间: 2013-8-25 02:01
想问一下这个枚举类xxx是抽象的吗?还是这个类中有抽象方法了,自动变抽象类。

枚举类xxx不是抽象的,它是一个特殊类
这个XXX类也可以定义抽象方法,但必须实例化对象并且在实例化对象内实现这个抽象方法。

创建enum时,编译器会为你生成一个相关的类,这个类继承自java.lang.Enum.
public abstract class Enum<E extends Enum<E>>
        implements Comparable<E>, Serializable {




作者: xscn    时间: 2013-8-25 02:45
API是这么描述的public abstract class Enum<E extends Enum<E>>
意思就是说java规定枚举类XXX自动继承了java.lang.Enum,也就是说在使用enum关键字创建新的枚举类型的时,实际上是在创建java.lang.Enum类的子类。Enum这个类是抽象的。

你定义的枚举类XXX内部是可以定义抽象或者普通方法的,但是抽象方法必须得被枚举的元素采用内部类的形式实现。
作者: 薛鹏鹏    时间: 2013-8-25 15:21
如果您的问题已经解决
请更改分类未解决为已解决
保持队形,谢谢合作

详情参考 如何修改分类

作者: 陈洋    时间: 2013-8-26 00:46
HM张博文 发表于 2013-8-24 23:53
如果不具体,就是抽象类,你说的abcd是啥意思,题目没写清楚哦

枚举元素对象

作者: 陈洋    时间: 2013-8-26 00:52
xscn 发表于 2013-8-25 02:45
API是这么描述的public abstract class Enum
意思就是说java规定枚举类XXX自动继承了java.lang.Enum,也就 ...

你说的xxx继承的是Enum抽象类,内部可以定义抽象方法也可以定义普通方法,那么这个子类在没有定义抽象方法之前是抽象类还是普通类。大神解惑

作者: xscn    时间: 2013-8-26 01:07
别那么叫大神啊,我也是0基础学的
可以把枚举类看成是一个普通的类,和普通类一样都可以定义一些属性和方法和构造函数,不同之处是:枚举类的构造函数必须是私有的,而且枚举类不能使用extends关键字继承其他类,java单继承的局限性。
作者: 陈洋    时间: 2013-8-26 16:13
本帖最后由 陈洋 于 2013-8-26 16:16 编辑
xscn 发表于 2013-8-26 01:07
别那么叫大神啊,我也是0基础学的
可以把枚举类看成是一个普通的类,和普通类一样都可以定义一些属性和方法 ...


那叫高手,那么当枚举类中有抽象方法的时候,你说的:“可以把枚举类看成是一个普通的类”这时的枚举类还是普通类吗?难道是内部自动升级抽象类?

作者: 肥猫    时间: 2013-8-26 16:17
枚举跟抽象类没什么关系吧,你定义的ABCD,可以理解为你想定义4个枚举值,每个枚举值就是一个实例。




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