标签:serial 继承 span strong 关键字 分享 enum san 方法
某些情况下,一个类的对象是有限而固定的。
如地球上的季节,有春夏秋冬四季,即四个对象。
这种实例有限且固定的类,被称为枚举类。
早期,通过定义类的方式,直接使用简单的静态变量来表示枚举。
如public static final int Season_spring=1; 注:左边的内容改下名字和X4
但这种方式存在诸多不便和缺陷。(如类型安全和容易混淆,后来,它进化了……
变身:
java5中新增了一个关键字,enum(与class,interface的地位相同)
它是一个特殊的类,可以拥有自己的成员变量,方法,可以实现一个或多个接口,也可以定义自己的构造器。
对比一下:
public enum Season{
Spring,Summer,Fall,Winter;
}
是不是很简洁呢?
但它不是普通类,它和普通类存在区别:
1枚举类可以实现一个和多个接口,使用enum定义的枚举类默认继承了java.lang.Enum类,而不是继承Object类,因此枚举类不能显式继承其他父类,其中java.lang.Enum类实现了java.lang.Serializable和java.lang.Comparable两个接口。
2使用Enum定义、非抽象的枚举类会默认使用final修饰,因此枚举类不能派生子类。
3枚举类的构造器只能使用private访问控制符
4枚举类所有实例必须在显式在第一行列出,否则永远不能产生实例。
枚举类默认 提供了一个values()方法,该方法可以很方便的遍历出所有枚举值。
java.lang.Enum类中所提供的方法
public enum Gender
{
MALE,FEMALE;
//定义一个public修饰的实例变量
public String name;
}
public class GenderTest
{
main方法(此处)
//通过Enum的valueof()方法来获取enum类的枚举值
Gender g=Enum.valueof(Gender.class,"FEMALE");
g.name="女";
//直接访问枚举值的name实例变量
system.out.println("g"+"代表:"+g.name);
}
}
可以进行一些改进,把String name设成私有属性,然后添加一个方法,在里面利用Switch控制实现一个公有的setName方法,避免造成混淆。
暂时就到这里了,每天进步一点点。学习up
标签:serial 继承 span strong 关键字 分享 enum san 方法
原文地址:https://www.cnblogs.com/jump123/p/8761297.html