一、今日学习
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 }
运行结果:
二、遇到问题
1.在综合示例中,引入另外一个包内的类时报错
2.@Override写上可以当作注释,方便阅读;可以验证下面的方法名是否是父类所有的,起到检查的作用
三、明日学习
1.复习第四章
2.学习Java第五章知识