Java中的枚举
1.枚举
(1)定义:public enum 枚举名字{}
1 public enum Color{
2 RED,GREEN,BLACK,YELLOW;
3 public static void main(String[] args) {
4 Color c=Color.RED;
5 System.out.println(c);
6 }
7 }
(2)嵌套在switch中
可以用switch打印枚举时代码可读性更强
1 public enum Color{
2 RED,GREEN,BLACK,YELLOW;
3 public static void main(String[] args) {
4 Color c=Color.RED;
5 switch(c) {
6 case RED:
7 System.out.println("红色");
8 break;
9 case GREEN:
10 System.out.println("绿色");
11 break;
12 case BLACK:
13 System.out.println("黑色");
14 break;
15 case YELLOW:
16 System.out.println("黄色");
17 break;
18 }
19 }
20 }
(3)在枚举中定义构造方法
在枚举中定义构造方法,必须使枚举中的变量形式与构造方法的形式保持一致
注:枚举中的构造方法必须是private
1 public enum Color{
2 RED("红色"),GREEN("绿色"),BLACK("黑色"),YELLOW("黄色");
3 //成员变量
4 private String name;
5 //构造方法
6 private Color(String name) {
7 this.name=name;
8 }
9 public String getName() {
10 return name;
11 }
12 public void setName(String name) {
13 this.name=name;
14 }
15 public static void main(String[] args) {
16 Color c=Color.RED;
17 System.out.println(c.name);
18 }
19 }
(4)枚举中实现接口
所有枚举继承自Java.lang.Enum类,枚举不能继承其他类,但可以实现接口
1 public enum Color implements H{
2 RED("红色"),GREEN("绿色"),BLACK("黑色"),YELLOW("黄色");
3 //成员变量
4 private String name;
5 //构造方法
6 private Color(String name) {
7 this.name=name;
8 }
9 public String getName() {
10 return name;
11 }
12 public void setName(String name) {
13 this.name=name;
14 }
15 @Override
16 public void get(){
17 System.out.println("get...");
18 }
19 public static void main(String[] args) {
20 Color c=Color.RED;
21 c.get();
22 }
23 }
24 interface H{
25 void get();
26 }
(5)在枚举中定义抽象方法
如果想在枚举中定义抽象方法,则枚举中的每个变量必须实现抽象方法
1 public enum Color{
2 RED{
3 public void get() {
4 System.out.println("红色");
5 }
6 },GREEN{
7 public void get() {
8 System.out.println("红色");
9 }
10 },BLACK{
11 public void get() {
12 System.out.println("红色");
13 }
14 },YELLOW{
15 public void get() {
16 System.out.println("红色");
17 }
18 };
19 public abstract void get();
20 }
2.练习
完成图书管理系统的一个读者借阅信息类
1 public class service {
2 private String bookname;
3 private String writername;
4 private String home;
5 private String borrowtime;
6 private String returntime;
7 private String musttime;
8 private int day;
9 private int money;
10 public void setBookName(String name) {
11 this.bookname=name;
12 }
13 public void setWriterName(String name) {
14 this.writername=name;
15 }
16 public void setHome(String name) {
17 this.home=name;
18 }
19 public void setBorrowTime(String time) {
20 this.borrowtime=time;
21 }
22 public void setReturnTime(String time) {
23 this.returntime=time;
24 }
25 public void setMustTime(String time) {
26 this.musttime=time;
27 }
28 public void setDay(int a) {
29 this.day=a;
30 }
31 public void setMoney(int a) {
32 this.money=a;
33 }
34 public String getBookName() {
35 return bookname;
36 }
37 public String getWriterName() {
38 return writername;
39 }
40 public String getHome() {
41 return home;
42 }
43 public String getBorrowTime() {
44 return borrowtime;
45 }
46 public String getReturnTime() {
47 return returntime;
48 }
49 public String getMustTime() {
50 return musttime;
51 }
52 public int getDay() {
53 return day;
54 }
55 public int getMoney() {
56 return money;
57 }
58 public static void main(String[] args) {
59 service s1=new service();
60 s1.setBookName("老人与海");
61 s1.setWriterName("海明威");
62 s1.setHome("上海译文出版社");
63 s1.setBorrowTime("2020/5/30");
64 s1.setReturnTime("2020/7/5");
65 s1.setMustTime("2020/6/30");
66 s1.setDay(5);
67 s1.setMoney(150);
68 service s2=new service();
69 s2.setBookName("西游记");
70 s2.setWriterName("吴承恩");
71 s2.setHome("上海世界书局");
72 s2.setBorrowTime("2020/6/25");
73 s2.setReturnTime("2020/7/16");
74 s2.setMustTime("2020/7/25");
75 s2.setDay(0);
76 s2.setMoney(0);
77 service[] ps= {s1,s2};
78 for(int i=0;i<ps.length;i++) {
79 System.out.println("读者"+(i+1));
80 System.out.println("书名:"+ps[i].getBookName());
81 System.out.println("作者:"+ps[i].getWriterName());
82 System.out.println("出版社:"+ps[i].getHome());
83 System.out.println("借书时间:"+ps[i].getBorrowTime());
84 System.out.println("还书时间:"+ps[i].getReturnTime());
85 System.out.println("应还时间:"+ps[i].getMustTime());
86 System.out.println("超期天数:"+ps[i].getDay());
87 System.out.println("罚款金额:"+ps[i].getMoney());
88 System.out.println();
89 }
90 }
91 }
运行结果:



浙公网安备 33010602011771号