【黑马程序员】jdk`.5-------枚举类
来源:互联网 发布:淘宝买东西用什么支付 编辑:程序博客网 时间:2024/05/02 07:35
---------------------- <a href="http://edu.csdn.net"target="blank">ASP.Net+Android+IOS开发</a>、<a href="http://edu.csdn.net"target="blank">.Net培训</a>、期待与您交流! ----------------------
一、枚举类的定义:
查阅:API中Enum类是一个抽象类,实现了Serizlizable和Comparable接口,继承Object类。枚举是使用enum关键字来修饰类名来创建枚举类,相当于它继承了Enum这个抽象类,可以使用其中的方法
二、枚举的特点:
1、枚举是一个特殊的类,其中可以定义构造方法,成员变量,普通方法,和抽象方法。
2,、枚举类中的构造方法必须是private私有的,因为枚举中的成员变量是固定不变,所以用静态常量来表示,用大写字母表示。外面对其访问可以通过(类名、常量)来调用。
3、枚举类是一个fian类,他的抽象方法必须在它的内部实现
4、枚举是一个特殊的类,他的每个元素就是他的一个实例对象,因此他不可以有子类
5、枚举元素必须位于枚举类中的第一行,用逗号分开,结尾用分号结束。否则会编译不通过
6、枚举元素可以使用switch选择语句
三、枚举的应用:
枚举就让某个类型的变量的取值只能为若干个固定值中的一个,否则编译器就报错,枚举可以让编译器在编译时期就可控制程序中填写的非法值,普通变量的发送在开发阶段无法实现这一目标。这时就要用的枚举类
练习:
/* * 用普通类如何实现枚举功能,定义一个Weekday的类来模拟枚举功能。 1、私有的构造方法 2、每个元素分别用一个公有的静态成员变量表示 3、可以有若干公有方法或抽象方法。采用抽象方法定义nextDay就将大量的if.else语句转移成了一个个独立的类。 */ public abstract class WeekDay { private WeekDay(){} public final static WeekDay SUN=new WeekDay(){ public WeekDay nextDay(){ return MON; } }; public final static WeekDay MON=new WeekDay(){ public WeekDay nextDay(){ return SUN; } }; public abstract WeekDay nextDay(); public String toString(){ return this==SUN?"SUM":"MON"; } }
练习:一周7天的例子。
public class WeekdayTest{public static void main(String[] args){Weekday[] days = Weekday.values(); for(Weekday day : days) { System.out.println("今天是: "+day); System.out.println("明天是:"+day.nextDay()); }}//定义一个内部枚举类enum Weekday{//每个元素使用匿名内部类的方法来实现抽象方法,返回当天的下一天是星期几 MON { @Override public Weekday nextDay() { return TUE; } } , TUE { @Override public Weekday nextDay() { return WED; } }, WED { @Override public Weekday nextDay() { return THU; } }, THU { @Override public Weekday nextDay() { return FRI; } }, FRI { @Override public Weekday nextDay() { return SAT; } }, SAT { @Override public Weekday nextDay() { return SUN; } }, SUN { @Override public Weekday nextDay() { return MON; } }; //定义一个抽象方法来表示下一天是星期几 public abstract Weekday nextDay();}}
练习:带参数的私有的构造方法。
public class EnumTest {/** * @param args */public static void main(String[] args) {// TODO Auto-generated method stubWeekDay1 weekDay=WeekDay1.SUN;System.out.println(weekDay);WeekDay weekDay2=WeekDay.SAT;System.out.println(weekDay2);System.out.println("对象名字:"+weekDay2.name());System.out.println("返回对象的天数:"+weekDay2.ordinal());System.out.println("返回数组:"+weekDay2.values());System.out.println("返回枚举类元素个数:"+weekDay2.values().length);System.out.println("求字符串对应的WeekDay2的值:"+weekDay2.valueOf("FRI"));}//enum关键字,枚举,内部类public enum WeekDay{//带参数的构造方法SUN,MON,TUE,WED,THI,FRI(1),SAT;WeekDay(){System.out.println("空参数");}WeekDay(int i){System.out.println("int参数:");}}练习:交通灯例子。
//enum关键字,枚举,内部类public enum WeekDay{//带参数的构造方法SUN,MON,TUE,WED,THI,FRI(1),SAT;WeekDay(){System.out.println("空参数");}WeekDay(int i){System.out.println("int参数:");}}//交通灯,的枚举类public enum TrafficLamp{RED(10){@Overridepublic TrafficLamp nextLamp() {// TODO Auto-generated method stubreturn GREEN;}},GREEN(8){@Overridepublic TrafficLamp nextLamp() {// TODO Auto-generated method stubreturn YELLOW;}},YELLOW(3){@Overridepublic TrafficLamp nextLamp() {// TODO Auto-generated method stubreturn RED;}};//无参构造方法public abstract TrafficLamp nextLamp();int time;//有参构造方法private TrafficLamp(int time){this.time=time;}} }
- 【黑马程序员】jdk`.5-------枚举类
- 黑马程序员---枚举类
- 黑马程序员 枚举类日记
- 黑马程序员--枚举类(enum)
- 黑马程序员高新技术枚举类
- 黑马程序员—枚举类
- 黑马程序员_枚举类
- 黑马程序员-jdk1.5新特性---枚举
- 黑马程序员_JDK1.5新特性-枚举
- 黑马程序员----枚举类的学习笔记
- 黑马程序员Java类之枚举(Enum)
- 【黑马程序员】枚举类手动实现
- 黑马程序员—Java中的枚举类
- 黑马程序员——枚举类
- 黑马程序员-关于枚举类的使用
- 黑马程序员——枚举类知识点
- 黑马程序员-枚举类的使用
- 《黑马程序员》枚举复习
- java Random 随机数
- 嵌入式、Linux 博客收藏
- Android实现秒表计时器的程序设计
- 站长如何构思原创文章的来源
- java常见问题记录
- 【黑马程序员】jdk`.5-------枚举类
- 数据流图的画法
- Winform 等待...提示
- 关于Excel中超链接点击报“没有权限,请于管理员联系“解决方法
- 通过"棱镜门"看事物的联系
- 如何成为一名优秀的C程序员
- Oracle常用的数据字典
- 请不要忽略API的安全性
- win8使用技巧