枚举 --java学习笔记

什么是枚举

枚举是一种特殊类

格式:

修饰符 enum 枚举类名{

        名称1,名称2,...;        //枚举类的第一行必须罗列的是枚举对象的名字

        其他成员...

}

  • 枚举类的第一行只能罗列一些名称,这些名称都是常量,并且每个常量记住的都是枚举类的一个对象
  • 枚举类的构造器都是私有的(写不写都只能是私有的),因此,枚举类对外不能创建对象
  • 枚举都是最终类,不可以被继承
  • 枚举类中,从第二行开始,可以定义类的其他各种成员
  • 编译器为枚举类新增了几个方法,并且枚举类都是继承:java.lang.Enum类的,从enum类也会继承到一些方法
  • 枚举的应用场景:做信息标志和分类

例:

public enum A {
    A,B,C;  //罗列枚举对象的名字
    private String name;

    public void setName(String name) {
        this.name = name;
    }

    public void Myname(){
        System.out.println(this.name);
    }
}
public class Test {
    public static void main(String[] args) {
        A a = A.B;  //枚举类对象创建,使用罗列的枚举对象名字
        a.setName("小明");    //类方法正常使用
        a.Myname();

        //编译器为枚举类新增的和从enum类继承到的一些方法
        A[] as = A.values();    //拿到全部对象
        A a2 = A.valueOf("C");  //根据名字拿到对象
        System.out.println(a2.name());   //拿到对象名字 C
        System.out.println(a2.ordinal());   //拿到对象索引 2,也就是罗列名字时的顺序,从0开始
    }
}

 

抽象枚举

也就是带有抽象方法的枚举类,需要在罗列对象名字时实现该抽象方法

例:

public enum B { //抽象枚举
    X{
        @Override   //实现抽象方法
        public void say() {

        }
    }
    ,Y("小明"){   //通过有参构造器赋初值
        @Override
        public void say() {
            System.out.println("我是"+getName());
        }
    };

    private String name;

    B() {
    }

    B(String name) {
        this.name = name;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public abstract void say(); //抽象方法

}
public class Test2 {
    public static void main(String[] args) {
        B b = B.Y;
        b.say();
    }
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

A泽予

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值