------- 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的抽象方法了吗。所以它就能够创建对象了。
小小的一个枚举都能牵涉众多,知识还是联系越来越紧密了。。。