面向对象加强3 枚举

这里写图片描述

这里写图片描述

这里写图片描述

枚举
1.枚举是一种特殊的类,其中的所有变量(其实都是常量)
2.都是当前枚举类型的常量对象。
3.在外部是不能new枚举对象,只能从该枚举中读。
4.一个枚举常量仅包含一个数据时,直接使用默认(空参)构造方法
5.枚举变量的值必须是枚举中那些常量当中的一个

eg
public enum SexEnum {
   male,female,others  
}

public class Client {
    public static void main(String[] args) {
        SexEnum a= SexEnum.male; 
        System.out.println(a);
        System.out.println("-----------------");
        //遍历出枚举中的所有常量
        SexEnum ar[] = SexEnum.values();
        for(SexEnum x: ar){
            System.out.println(x);
        }

    }

以上是枚举普通的用法,接下来是枚举更高级的用法:

1.如果每个枚举常量对象中包含多个数据,那么得自己写自定义构造方法。否则该枚举中只有默认构造方法,它只能构造一个空参对象,无法封装多个数据

2.枚举中的构造方法是用来构造枚举常量(对象)的,因此形参列表要和常量(对象)声明的格式一致

3.为了外面使用枚举类能够获取枚举常量(对象)中的数据信息,必须在枚举类中声明相应属性变量

4.枚举中的构造方法全是private—我们不写,Java也会帮我们加

5.枚举通常是定义一些常量对象的,这些对象的信息一般是不变的,
因此属性变量通常要声明成final,否则外面可以更改这些属性.如果一个 属性声明成final,则该属性不能有setter方法

6.如果枚举常量之后要添加属性变量、构造方法等内容,那么必须在最后一个常量对象后面添加”;”号—如果后面不添加代码,则可以省略这个分号

7.枚举中可以添加其它自定义方法,也可以访问Object中的方法

public enum Color {
    RED("红色", 1), GREEN("绿色", 2), YELLOW("黄色", 3);

    final private String name;
    final private int index;

    Color(String name, int index) { //该构造方法自动会把每个常量对象中的数据传给属性变量:name,index
        this.name = name;
        this.index = index;
    }

    public String getName() {
        return name;
    }

    public int getIndex() {
        return index;
    }

    @Override
    public String toString() {
        return name+","+index;
    }   
}

public class Client {
    public static void main(String[] args) {
        Color c = Color.GREEN;
        //Color c = new Color("aa",4);//WA,不能new
        System.out.println(c.getName());
        System.out.println(c);

        System.out.println("---------------");

        for(Color cc: Color.values()){
            System.out.println(cc);
        }

    }
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值