自学Java基础知识第二十天

1. 枚举类型(扩展)

  1. 枚举类型与class类非常相似, 枚举类型表示定义出一个类型, 这个类型可以创建的对象个数固定, 这种情况下可以使用枚举类型

   举例 : 定义出一个星期类型, 星期只有1-7, 于是将1-7每一个星期对象个数固定下来, 只能创建出7个对象, 分别对应1-7

   月份类型 : 1-12, 只能创建出12个月份对象, 对应1-12

  1. 枚举类型实现:

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());// 枚举星期三

}

}

原文地址:https://www.cnblogs.com/masterhxh/p/13629074.html