黑马程序员_枚举


 ------- android培训java培训、期待与您交流! ----------

                刚刚看来张孝祥老师关于枚举的教学视频,一个在之前被java抛弃而后又拾回来的的功能模块,还是有那么多故事等着我们去看看的。

            学过c的我们都知道enum,在c中虽然用的不多,但用起来绝对不是一个爽字了得。现在我们就来看看java重拾的枚举吧。

            怎么去定义一个枚举呢,java是面向对象的,能像c那样随随便便就弄一个出来吗?

                 

public enum Weekday
{
       Sunday,Monday,Tu             
     就是这么随便的弄了一下,这就是一个枚举。java的枚举是不是也很简单呀?

            你知道吗,我们还能够在里面添加自定义成员哦?吐舌头

 

public enum Weekday
{
       Sunday(1),Monday,Tuesday,Wednesday,Thursday,Friday,Saturday;
       private int num;
       private Sunday()
       {
              System.out.println("无参构造函数"); 
       private Sunday(int num)
       {
              this.num = num;
              System.out.println("有参构造函数"); 

       }
}

              这样改动后我们会发现第一行打印的会是:有参构造函数。其余的都是无参构造函数。因为我们只有Sunday(1)调用了有参数的构造函数。需要注意的就是,那7个对象必须至于首行,不能够有其他代码在他们前面,不然编译会出错的额。其实他就是一个类的模型,比较特殊罢了。让我们来看看另一种形态吧。

 

public enum Weekday
{
	Sunday{
		public Weekday nextDay()
		{
			return Monday;
		}
	},Monday{
		public Weekday nextDay()
		{
			return Tuesday;
		}
	},Tuesday{
		public Weekday nextDay()
		{
			return Sunday;
		}
	};
	public abstract Weekday nextDay();
}

                 看见没?那不是abstract吗,它也能够在里面出现。这种情况就比较难看一点了,阅读性降低啦。因为有抽象方法是不能够创建对象的。但是怎么还有对象被创建了呢?

其实它是调用了子类。没看见那蓝体字吗,不正是实现了Weekday的抽象方法了吗。所以它就能够创建对象了。

            小小的一个枚举都能牵涉众多,知识还是联系越来越紧密了。。。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值