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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 杨玲 中级黑马   /  2013-2-7 22:36  /  1947 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

------- <a  target="blank">android培训</a>、<a  target="blank">java培训</a>、期待与您交流! ----------


现在总结JAVA中的枚举.整理一下关于枚举的知识,通过整理枚举的内容大体可以分为以下几个方面的

1.定义枚举的方式.
2.枚举的实现原理.
3.更复杂的枚举.
4.在使用时要注意的.

        枚举是当某一个对象只有为数不多种取值的时候用于表现对象的,比如路灯的颜色只有红绿黄三
种.如果直接用三个数字来表示的话可读性太差,而用三个有名字的值来表示就可以很容易的知道这是
三种颜色了,所以为了程序的可读性,在对象的取值不多的情况下还是用枚举吧!先说第一点.

1.定义枚举的方式.

在JAVA中枚举是用关键字enum来表示的,要定义一个枚举对象可以用以下格式:
public enum Traffic
{
        //第一行用于写上这个对象的可取的值,用","分开.如:
        Red,Green,Yellow;
}
这样就定义了一个最简单的枚举对象,它有三个取值,Red,Green,Yellow;在谈更复杂的枚举之前先来看
看它的原理

2.枚举的实现原理.
枚举其实就是一个类.它是由在这个类内部用给定这个类对象的引用的方式实现的.如下:
public Traffic
{
        //先把构造方法私有化.这样就能保证除了我内部有的以外不能再创建别的对象.
        private Traffic{}
        //创建Red,Green,Yellow,三个对象,定义它所有的取值.
        public static Traffic Red = new Traffic();
        public static Traffic Green = new Traffic();
        public static Traffic Yellow = new Traffic();
}
我们在想要用的时候就只能够取这三个取值中的一个.如:
Traffic newColor = Traffic.Red;
像上面这样就简单的模拟了一下JAVA中枚举的实现,而JAVA中把这一步帮我们简化了,可以直接
像上面那样定义了.

3.更复杂的枚举.
既然枚举它其实是一个类,那么肯定可以给它定义方法和属性了,而这些在JAVA的枚举中也是可以
的,在枚举中定义属性和方法的格式:还是使用前一个的方式.

public enum Taffic
{
        Red(60)//由于加入了一个带参数的构造方法,所以要实例化时要传入一个值
        {
                //由于定义了一个抽象方法,所以在实例化时还得覆写一下.用内部类实现
                public abstract Taffic next()
                {
                        return Green;
                }
        },
        Green(50)//下面这些也是同样的道理.
        {
                public abstract Taffic next()
                {
                        return Yellow;
                }
        },
        Yellow(5)
        {
                public abstract Taffic next()
                {
                        return Red;
                }
        };
        //定义一个成员变量,用于表示它所持续的时间.
        private int time;
        //定义一个抽象方法,返回下一个对象.
        public abstract Taffic next();
        //由于定义了成员变量,所以加入一个构造方法.
        private Taffic(int time)
        {
                this.time = time;
        }
}

就这样一个比较复杂的枚举就出现了,当然如果是一步步的加入还是很容易理解的.
现在是最后一点,也是比较内容出错的地方.需要多多的注意一下!

4.在使用时要注意的.
        1.枚举中的元素列表,必须写在枚举类的最前面.如果列表过后没有其它内容则
          可以不用写";",否则必须加上";".
        2.枚举类中的所有的构造方法都是私有的,如果自己要写构造方法需要注意.
        3.枚举类中如果有抽象方法,则必须在元素列表外以内部类的格式实现.
        4.枚举类可以做为 switch语句的条件使用.

关于枚举的知识到这里也就差不多了,枚举的总结就到此为止!

5 个回复

倒序浏览
这个是应该写在博客里的吧!同学
三、申请入学考试,提交技术日记
  技术日记占20分,每一篇日记2分,共10篇,
    1、日记内容为自己每天的学习总结,具体细节参考黑马以前同学写的博客:http://heimacxy.blog.163.com/blog/static/1903840442011611112028947/
    2、日记书写规则,请查看:http://bbs.itheima.com/forum.php?mod=viewthread&tid=594,认真遵照执行!否则将不认为此篇日记为黑马日记。
    3、博客发表地址不限,最好是:163博客、iteye博客、csdn博客、博客园。(注意:在以上网站发布后,同时在您自己的qq空间中保存一份)。
回复 使用道具 举报
张文彬 发表于 2013-2-7 22:47
这个是应该写在博客里的吧!同学
三、申请入学考试,提交技术日记
  技术日记占20分,每一篇日记2分,共 ...

呵呵,不是说地址不限嘛,放哪都一样!
回复 使用道具 举报
貌似不是的 好像是写在博客上,然后基础过了之后,申请入学测试时发到入学测试专区里申请入学测试
http://bbs.itheima.com/forum-19-1.html   

应该是这样的吧。。。。。
回复 使用道具 举报
张文彬 发表于 2013-2-8 00:22
貌似不是的 好像是写在博客上,然后基础过了之后,申请入学测试时发到入学测试专区里申请入学测试
http://b ...

是吗?那我们这些个不用博客的人情何以堪呀?先不管他,等申请考试的时候看情况再说吧!
回复 使用道具 举报
杨玲 发表于 2013-2-8 14:24
是吗?那我们这些个不用博客的人情何以堪呀?先不管他,等申请考试的时候看情况再说吧! ...

恩 存着 等申请时候发就行  我也不用博客 呵呵 但也新申了个
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马