枚举是什么?
枚举就是一个特殊的java类,它继承了java.lang.Enum这个类。
枚举的作用
我们在开发中,有些数据必须被限定在某个范围,不可以超出这个范围,此时就需要使用枚举。它能够使我们代码简单,安全。
package cn.itcast.enumdemo;
public class Demo2 {
//使用枚举提供阅读性,提高安全类
public static void main(String[] args)
{
Employee1 e1=new Employee1("Jack", 100000,Role.BOSS);
System.out.println(e1);
}
}
//声明一个员工类
class Employee1
{
private String name;
private double salary;
//员工有角色,BOSS,MANAGE,WORKER
private Role role;
public Employee1(String name, double salary, Role role) {
super();
this.name = name;
this.salary = salary;
this.role = role;
}
@Override
public String toString() {
return "Employee1 [name=" + name + ", salary=" + salary + ", role="
+ role + "]";
}
}
enum Role
{
BOSS,MANAGER,WORKER
}
//class Role
//{
// public static final Role BOSS=new Role();
// public static final Role MANAGER=new Role();
// public static final Role WORKER=new Role();
//}
枚举类的特性
1、枚举类也是一种特殊形式的Java类
2、枚举类中声明的每一个枚举值代表枚举类的一个实例对象
3、余java中普通类一样,在声明枚举类时,也可以声明属性。方法和构造函数,但是枚举的构造函数必须为私有的private
构造函数,属性,方法
4、若枚举类中只有有个枚举值,则可以当做单态设计模式使用
package cn.itcast.enumdemo;
public class Demo5 {
public static void main(String[] args) {
}
}
enum EnumDemo
{
//1、枚举值
//如果枚举中只有枚举值,最后一个枚举值后面可以不写;结束符。
//如果还有其他成员,必须在最后一个枚举值加上;。
A,B,C;
//上面每一个枚举值,代表的是EnumDemo类的一个对象
//对于枚举值,我们可以直接用枚举名.枚举值。因为它本质上是一个static修饰的。
//2、构造方法,默认是private,并且必须为private,可以重载。
// private EnumDemo()
// {
//
// }
EnumDemo()
{
}
//3、声明属性(静态,非静态)
private int id;
private static String name;
//4、声明方法(静态,非静态)
public void show()
{
}
public static void show1()
{
}
}
1、枚举默认就是abstract的,不可以实例化。因为枚举中可以声明abstract方法。(可以声明抽象方法的类必须是抽象类)
2、枚举中可以拥有abstract抽象方法。
3、枚举的所有成员,默认都是public static final类型的。且必须要第一行开始声明,必须在,(逗号)分开
4、所有的枚举,默认都是java.lang.Enum。
5、Enum类不但是所有枚举的公共的基类,还是一个工具类。
当枚举类中有抽象方法时,枚举值后应该实现这些方法
enum EnumDemo
{
A{
@Override
public void show2() {
// TODO Auto-generated method stub
}
},
B{
@Override
public void show2() {
// TODO Auto-generated method stub
}
},
C{
@Override
public void show2() {
// TODO Auto-generated method stub
}
};
public abstract void show2();
}