黑马程序员-枚举类的使用

------<a href="http://www.itheima.com" target="blank">Java培训、Android培训、iOS培训、.Net培训</a>、期待与您交流! -------


用普通类模拟枚举,调用一周的某一天显示下一天

abstract class WeekDay{
private WeekDay(){}  //构造方法私有化
    public abstract WeekDay nextDay();  //定义返回下一天的抽象方法
//原型是public static final WeekDay MON=new WeekDay(),因为有构造方法,所以在new WeekDay(){}方法体里将抽象方法实现,当作
    //子类的实现对象传给WeekDay MON
    public static final WeekDay MON=new WeekDay(){  
        public WeekDay nextDay(){
            return SUN;            //返回MON的下一天SUN
        }
    };
    public static final WeekDay SUN=new WeekDay(){
        public WeekDay nextDay(){
            return MON;
        }
    } ;
    public String toString(){
        return this==SUN?"SUN":"MON";
    }
}
public class WeekDayTest{
    public static void main(String[] args) {
        WeekDay wd=WeekDay.SUN;
        System.out.println(wd.nextDay()); //返回nextDay()并调用toString()输出结果
    }
}

用枚举类完成以上代码:

public class WeekDayTest{
    public static void main(String[] args) {
        Weekday day=Weekday.SUN;
        System.out.println(day.nextDay());
    }
    public enum Weekday{
        SUN("星期日"){                //定义枚举类的元素并完成抽象方法nextDay()
            public Weekday nextDay(){
                return MON;
            }
        },MON("星期一"){              
            public Weekday nextDay(){
                return SUN;
            }
        };
        public abstract Weekday nextDay();
        private String day;
        private Weekday(String day){     //构造方法必须是私有的
            this.day=day;
        }
    }
}
有关枚举类的一些说明:

1、枚举就相当于一个类,枚举里的每个元素相当于一个对象,在枚举类中元素列表必须在第一行,如果元素列表之后没有其他语句,“;”可以不加,反之必须加上。 枚举的构造方法必须是私有的,默认构造方法也是私有的。 只要用到了枚举类,枚举的静态代码就会执行,如无参构造方法
2、调用无参构造方法时元素后可以有( ),也可以没有( ) ,调用有参构造方法时则必须有( ),而且( )里的参数类型应与有参构造方法想对应
3、枚举类中如果有抽象方法,那么可以在元素的后面跟上{}实现抽象方法,以明确枚举类的元素是子类的实例对象。 这时枚举类的元素由有枚举类的一个子类实现的,实现代码在{}里,把{}里的代码看成子枚举类的匿名内部类
注:如果枚举中只有一个成员,那么就可以作为一种单列设计模式来用

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值