自学Java基础知识第二十天
1. 枚举类型(扩展)
- 枚举类型与class类非常相似, 枚举类型表示定义出一个类型, 这个类型可以创建的对象个数固定, 这种情况下可以使用枚举类型
举例 : 定义出一个星期类型, 星期只有1-7, 于是将1-7每一个星期对象个数固定下来, 只能创建出7个对象, 分别对应1-7
月份类型 : 1-12, 只能创建出12个月份对象, 对应1-12月
- 枚举类型实现:
1) 枚举类型定义,需要关键字enum, 每一个枚举类型的对象, 以枚举项形式列举出来即可, 就是将对象名列举出来, 多个枚举项之间使用 , 进行分隔, 最后一个枚举项使用;作为结束
注意 : 枚举项必须写在枚举类型第一行
2) 枚举类型中的所有构造方法都是私有的, 因此枚举类型在其他外类中无法创建对象
3) 枚举类型中一样可以定义成员变量, 方法, 使用枚举类型对象调用即可
代码
package com.ujiuye.enumdemo; // 定义一个星期类对比枚举类型 public class Weekday { private String name; // 2. 本类中设计出Weekday类型的对象 public static final Weekday MON = new Weekday("星期一"); public static final Weekday TUE = new Weekday("星期二"); public static final Weekday WED = new Weekday("星期三");
// 1. 为了不能在其他类型中创建出Weekday对象, 于是构造方法私有化 private Weekday() {}
private Weekday(String name) { super(); this.name = name; }
public String getName() { return name; }
public void setName(String name) { this.name = name; } } |
package com.ujiuye.enumdemo; // 表示星期类型, 枚举, 自带就是创建的类型类型的对象个数固定 public enum WeekdayEnum { //类比 : public static final WeekdayEnum MON = new WeekdayEnum(); // 枚举项必须写在枚举类型的第一行 MON("枚举星期一"),TUE("枚举星期二"),WED("枚举星期三"); // 枚举类型中的所有构造默认私有 private String name;
public String getName() { return name; }
public void setName(String name) { this.name = name; }
private WeekdayEnum(String name) { this.name = name; } } |
package com.ujiuye.enumdemo; public class TestWeekday { public static void main(String[] args) { Weekday mon = Weekday.MON; Weekday mon1 = Weekday.MON; System.out.println(mon == mon1);// true System.out.println(mon.getName());// 星期一
Weekday mon2 = Weekday.TUE; System.out.println(mon2.getName());// 星期二
// 枚举类型中的星期对象 WeekdayEnum enum1 = WeekdayEnum.MON; WeekdayEnum enum2 = WeekdayEnum.MON; System.out.println(enum1 == enum2);// true
System.out.println(enum1.getName());// 枚举星期一 System.out.println(WeekdayEnum.WED.getName());// 枚举星期三 } } |