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 }
复制代码

运行结果:

posted @ 2022-02-25 10:46  救救孩子吧/  阅读(95)  评论(0)    收藏  举报