Enum Class (枚举类)- 入门

本文深入解析枚举类的使用,包括基本语法、实例演示、成员变量、构造器及方法的运用。介绍了枚举类与普通类的区别,如默认继承、构造器修饰符等,并提供了丰富的代码示例。

枚举类

如果一个类的对象是有限和固定的,则可以使用枚举类。本笔记,主要介绍基本的枚举类使用:基本语法和实例。

目录

正文

1. 枚举类-语法

1.1 枚举类与普通类相同之处

  • enum 与 class、interface 具有相同地位;
  • 可以继承多个接口;
  • 可以拥有构造器、成员方法、成员变量;

1.2 枚举类与普通类不同之处

  • 默认继承 java.lang.Enum 类,所以不能继承其他父类;其中 java.lang.Enum 类实现了 java.lang.Serializable 和 java.lang.Comparable 接口;
  • 使用 enum 定义,默认使用 final 修饰,因此不能派生子类;
  • 构造器默认使用 private 修饰,且只能使用 private 修饰;
  • 枚举类所有实例必须在第一行给出,默认添加 public static final 修饰,否则无法产生实例;

1.3 实例

public class Demo {

    public static void main(String[] args) {
        for(Season s : Season.values()) {   //values() 方法,返回 Season[] 枚举值集合
            new SeasonTest().judge(s);
        }
    }

}

enum Season {
    SPRING, SUMMER, FALL, WINTER;
}

class SeasonTest {
    
    public void judge(Season s) {
        switch(s) { //JDK 1.5 之后,switch 支持枚举类型;且,case 后面可以直接书写枚举值,不需要限定
        case SPRING:
            System.out.println("Spring");
            break;
        case SUMMER:
            System.out.println("Summer");
            break;
        case FALL:
            System.out.println("Fall");
            break;
        case WINTER:
            System.out.println("Winter");
            break;
        }
    }

1.4 成员变量、构造器和方法

1.4.1 成员变量实例
public class Demo {
    public static void main(String[] args) {
        // valueOf 是 Enum 中的静态方法,用于:返回指定枚举类中,指定名称的枚举值
        // 源码声明:
        // public static <T extends Enum<T>> T valueOf(Class<T> enumType, String name)
        Gender tom = Gender.valueOf(Gender.class, "FEMALE");
        tom.name = "female";
        System.out.println(tom + " + " + tom.name);
    }
}

enum Gender {
    MALE, FEMALE;
    public String name;
}
1.4.2 构造器
enum Gender {
    MALE("男"), FEMALE("女");
    private final String name;    //应该设置成 private final 
    private Gender(String name) {    // 应该设置成 private
        this.name = name;
    }
    
    public String getName() {
        return this.name;
    }
}
1.4.3 方法
//1. 实现接口方法(1)
interface Info {
    void info();
}
enum Gender implements Info{
    MALE("男"), FEMALE("女");
    private final String name;
    private Gender(String name) {
        this.name = name;
    }
    
    public String getName() {
        return this.name;
    }

    @Override
    public void info() {
        // 此时两个值调用的方法是相同的
    }
}
////1. 实现接口方法(2)
interface Info {
    void info();
}
enum Gender implements Info{
    MALE("男") {

        @Override
        public void info() {
            //  分别实现接口方法
            
        }
        
    }, 
    FEMALE("女") {

        @Override
        public void info() {
            // 分别实现接口方法
            
        }
        
    };
    private final String name;
    private Gender(String name) {
        this.name = name;
    }
    
    public String getName() {
        return this.name;
    }

}
//2. 实现 Enum 中的抽象方法
enum Gender {
    MALE("男"){

        @Override
        public void info() {
            // TODO Auto-generated method stub
            
        }
        
    },FEMALE("女"){

        @Override
        public void info() {
            // TODO Auto-generated method stub
            
        }
        
    };
    private final String name;
    private Gender(String name) {
        this.name = name;
    }
    
    public String getName() {
        return this.name;
    }
    
    public abstract void info();

}

转载于:https://www.cnblogs.com/mr-white/p/7193492.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值