【Java基础】最通俗易懂的枚举

本文深入解析Java枚举的定义与使用方法,包括枚举的基本语法、特性及如何利用枚举实现更加灵活的功能。同时,文章对比了枚举与常量的区别,并介绍了枚举在实际编程中的优势。

首先来看一下定义一个枚举

enum Animal{
    dog,cat,pig;
}

枚举的关键字是 enum,就好比类的关键字 class

其实枚举也可以看做是class,只不过枚举不可以创建实例(枚举的构造器是私有的private),

只能在enum中定义好,直接去使用就ok了

比如上图代码中的 

dog,cat,pig; 注意后面的分号不可以省略

这里就是枚举和类的不同之处了,要不然岂不是和class一样了,这样就将创建的实例限制在了枚举类中

而不是可以随心所欲的四处创建对象了

    public void testAnimal(Animal animal){
        
    }

这样这个方法的参数就限制了只能传Animal枚举类型了,这样看来枚举类又类似于接口了,只是实现类是在枚举内中

说到底枚举类的核心思想就是限制二字

我想大部分人最开始都是用的常量去表示

    public static final String dog = "狗";
    public static final String cat = "猫";
    public static final String pig = "猪";

那么上面的方法参数就变成了String

public void testAnimal(String animal){}

这个参数可是没有限制内容的,我可以输入任何字符串, 猴子,蛇各种动物等等等等,如果我只想输入的是狗,猫,猪

那么用枚举是最直观的

而且前面说了枚举也是类,可以有类的任何属性

enum Animal{
    dog("狗", 3),cat("猫", 2),pig("猪", 5);

    private String name;//名字
    private Integer age;//年龄

    Animal(String name,Integer age){
        this.name = name;
        this.age = age;
    }
    
    //访问属性的方法
    public String getName(){
        return name;
    }
    public Integer getAge(){
        return age;
    }

}
    public void testAnimal(Animal animal){
        System.out.println(animal.getName() + animal.getAge());
    }


    public static void main(String[] args) {
        EnumDemo enumDemo = new EnumDemo();
        enumDemo.testAnimal(Animal.cat);
    }

是不是觉得枚举比常量更直观,更好用有木有!!!

补充关键知识点

1.枚举类可以实现一个或多个接口,使用enum定义的枚举类默认继承了java.lang.Enum类,而不是继承Object类。

2.枚举类的枚举值默认修饰符为public static final。

3.使用enum定义,非抽象的枚举类默认会使用final修饰,因此枚举类不能派生子类。

4.枚举类的所有实例必须在枚举类的第一行显式列出,否则这个枚举类永远都不能产生实例。

5.JDK1.5增加枚举后对switch的扩展:switch的控制表达式可以是任何枚举类型。不仅如此,当
switch控制表达式使用枚举类型时,后面case表达式中的值直接使用枚举值的名字,无须添加枚举类作为限定。

6.并不是所有的枚举类都使用了final修饰!非抽象的枚举类才默认使用final修饰。对于一个抽象的枚举类而言,
只要它包含了抽象方法,它既是抽象枚举类,系统会默认使用abstract修饰,而不是final修饰。

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值