枚举

1、 枚举

​ 1.1 定义

  • 枚举类可以实现一个或多个接口,使用enum定义的枚举类默认继承了java.lang.Enum类,而不是默认继承Object类,因此枚举类不能显示继承其他父类。其中java.lang.Enum类实现了java.lang.Serializable和java.lang.Comparable两个接口。
  • 使用enum定义、非抽象的枚举类默认会使用final修饰,因此枚举类不能派生子类
  • 枚举类的构造器只能使用private访问控制符,如果省略了构造器的访问控制符,则默认使用private修饰;如果强制指定访问控制符,则只能指定private修饰符。
  • 枚举类的所有实例必须在枚举类的第一行显式列出,否则这个枚举类永远都不能产生实例。列出这些实例时,系统会自动添加public static final 修饰,无须程序员显式添加。
  • 枚举类默认提供了一个values()方法,该方法可以很方便地遍历所有的枚举值

​ 1.2 语法

  • 枚举的构造器是私有的
  • 枚举只能在自己的首行代码实例化自己的对象
  • 枚举的实例对象,默认会加上public static final修饰
  • 用法:枚举名.实例 Week.MONDAY;
public enum Week{//规定只能有几个实例
    //这些大写字母表示就是枚举的实例对象;7个对象
    MONDAY, TUESDAY, WEDNESDAY,THURSDAY,FRIDAY,SATURADAY,SUNDAY;
    //MONDAY:就是一个具体的对象; public static final Week MONDAY = new Week();
        
    public void test(){
        System.out.println("枚举里面的test方法");
    }
    
    public void test1(){
        System.out.println("枚举里面的test1方法"+this.name());
        }
}


    //测试类
public class TestEnum {
	public static void main(String[] args) {
        //这两个的输出是不一样的
		Week.MONDAY.test();//输出:枚举里面的test方法
        Week.FRIDAY.test();//输出:枚举里面的test方法
        System.out.println(Week.MONDAY == Week.FRIDAY);//false
        
        Week.MONDAY.test1();//输出:枚举里面的test方法MONDAY
        Week.FRIDAY.test1();//输出:枚举里面的test方法FRIDAY
	}
}

//枚举的应用
public enum Week1 {	
	//枚举的首行是枚举的实例;等同于Week MONDAY = new Week("周一");
    MONDAY("周一"), TUESDAY("周二"), WEDNESDAY("周三"),THURSDAY("周四"),FRIDAY("周五"),SATURADAY("周六"),SUNDAY("周日");
    
    private String ch;
    private Week1(String ch){
        this.ch = ch;
    }   
    public String getPt() {
		return ch;
	}
}


//测试类
public class TestEnum1 {//枚举的应用
	public static void main(String[] args) {
				
//		System.out.println(Week1.MONDAY.ch);//ch用private封装起来,只能用get方法访问
		System.out.println(Week1.MONDAY.getPt());
		
		System.out.println(Week1.FRIDAY.name());//得到当前实例的名字; 实例的名字就是实例本身的字符串
		System.out.println(Week1.SATURADAY.ordinal());//得到当前实例位于枚举实例的第几个(序号)
		
		//枚举可用于switch
		Week1 ww = Week1.MONDAY;
		switch (ww) {
		case MONDAY:
			System.out.println("今天是星期一");
			break;
		case TUESDAY:
			System.out.println("今天是星期二");
			break;
		case WEDNESDAY:
			System.out.println("今天是星期三");
			break;
		case THURSDAY:
			System.out.println("今天是星期四");
			break;
		case FRIDAY:
			System.out.println("今天是星期五");
			break;
		case SATURADAY:
			System.out.println("今天是星期六");
			break;
		case SUNDAY:
			System.out.println("今天是星期日");
			break;
		default:
			break;
		}
		
	}
}

1.3 意义

  • 规范取值范围,只能自己定义自己有多少个对象

  • 使用常量接口的话,就可以通过接口new出无数对象,达不到控制取值的效果

1.4 枚举的一些方法
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值