当类的对象只有有限个,确定的,像四季,每周的天数,支付方式,订单状态等等,或者当需要定义一组常量时,强烈建议使用枚举类!
1.枚举类的实现
JDK1.5之前需要自定义枚举类,那么我们按照枚举类的要求来写一个自定义的枚举类。
package 枚举类;
public class Test {
public static void main(String[] args) {
ZiChuan AXiu = ZiChuan.ZiChuanXiu;
System.out.println(AXiu);
}
}
//自定义枚举类
class ZiChuan{
//1.声明紫川对象的属性 :private final 修饰
private final String name;
private final String feature;
//2.私有化类的构造器,并给对象属性赋值
private ZiChuan(String name, String feature) {
this.name = name;
this.feature = feature;
}
//3.提供当前枚举类的多个对象:public static final 修饰
public static final ZiChuan ZiChuanXiu = new ZiChuan("紫川秀","纨绔不正经,待人真诚");
public static final ZiChuan DiLin = new ZiChuan("帝林","足智多谋,心狠手辣");
public static final ZiChuan SiTeLin = new ZiChuan("斯特林","刚直不阿,铁面无私");
//重写toString
@Override
public String toString() {
return "ZiChuan{" +
"name='" + name + '\'' +
", feature='" + feature + '\'' +
'}';
}
}
JDK 1.5之后,我们可以使用enum关键字定义枚举类,定义的枚举类默认继承java.lang.Enum类,所以输出枚举类对象时,toString方法来自Enum类而不是Objects类。
枚举类的主要方法:
使用enum关键字定义枚举类,请看下面的案例:
package 枚举类;
public class Demo {
public static void main(String[] args) {
ZiChuan AXiu = ZiChuan.ZiChuanXiu;
System.out.println(AXiu.toString()); // toString方法输出枚举类对象常量的名称,toString来自java.lang.Enum类
System.out.println("------------");
// values方法返回枚举类的对象数组
ZiChuan[] values = ZiChuan.values();
for(ZiChuan item : values){
System.out.println(item);
}
System.out.println("------------");
// valueOf(String objName): 返回枚举类中对象是objName的对象,如果没有则报错
ZiChuan diLin = ZiChuan.valueOf("DiLin");
System.out.println(diLin);
}
}
//使用enum关键字定义枚举类,定义的枚举类默认继承java.lang.Enum类
enum ZiChuan{
//1.提供当前枚举类的对象,多个对象之间用 "," 隔开,末尾对象 ";" 结束。格式为 对象名()
ZiChuanXiu("紫川秀","纨绔不正经,待人真诚"),
DiLin("帝林","足智多谋,心狠手辣"),
SiTeLin("斯特林","刚直不阿,铁面无私");
//2.声明紫川对象的属性 :private final 修饰
private final String name;
private final String feature;
//3.私有化类的构造器,并给对象属性赋值
private ZiChuan(String name, String feature) {
this.name = name;
this.feature = feature;
}
}
情况一:实现接口,在枚举类中实现抽象方法
// 接口
interface Description{
void description();
}
//使用enum关键字定义枚举类,定义的枚举类默认继承java.lang.Enum类
enum ZiChuan implements Description{
//1.提供当前枚举类的对象,多个对象之间用 "," 隔开,末尾对象 ";" 结束。格式为 对象名()
ZiChuanXiu("紫川秀","纨绔不正经,待人真诚"),
DiLin("帝林","足智多谋,心狠手辣"),
SiTeLin("斯特林","刚直不阿,铁面无私");
//2.声明紫川对象的属性 :private final 修饰
private final String name;
private final String feature;
//3.私有化类的构造器,并给对象属性赋值
private ZiChuan(String name, String feature) {
this.name = name;
this.feature = feature;
}
@Override
public void description() {
System.out.println("紫川家族!");
}
}
情况二:让枚举类的对象分别实现接口中的抽象方法。
如果我们枚举类的对象对接口中的方法有不同的描述,我们可以让枚举类的对象分别实现接口中的抽象方法!
// 接口
interface Description{
void description();
}
//使用enum关键字定义枚举类,定义的枚举类默认继承java.lang.Enum类
enum ZiChuan implements Description{
//1.提供当前枚举类的对象,多个对象之间用 "," 隔开,末尾对象 ";" 结束。格式为 对象名()
ZiChuanXiu("紫川秀","纨绔不正经,待人真诚"){
@Override
public void description() {
System.out.println("老三");
}
},
DiLin("帝林","足智多谋,心狠手辣"){
@Override
public void description() {
System.out.println("老大");
}
},
SiTeLin("斯特林","刚直不阿,铁面无私"){
@Override
public void description() {
System.out.println("老二");
}
};
//2.声明紫川对象的属性 :private final 修饰
private final String name;
private final String feature;
//3.私有化类的构造器,并给对象属性赋值
private ZiChuan(String name, String feature) {
this.name = name;
this.feature = feature;
}
}
如果你觉得博主写的还不错的话,可以关注一下当前专栏,博主会更完这个系列的哦!也欢迎订阅博主的其他好的专栏。
🏰系列专栏
👉软磨 css
👉硬泡 javascript
👉flask框架快速入门