Java-枚举类(学习笔记)

枚举:当程序运行时的数据不是任意的,而是一定范围的值时使用枚举。jdk5以前采用的是自定义的方法,jdk5以后采用枚举的方法。

一、枚举的使用简例

public class Demo{
	public void test(){
		print(Grade.B);//只能传ABCDE指定的五个值
	}
	public void print(Grade g){//A B C D E
	
	}
}
//jdk5以前的自定义方法
class Grade{
	private Grade(){}
	public static final Grade A = new Grade();
	public static final Grade B = new Grade();
	public static final Grade C = new Grade();
	public static final Grade D = new Grade();
	public static final Grade E = new Grade();
}
//jdk5以后的枚举法
enum Grade{          A,B,C,D,E;//成绩等级,Grade相当于以前的类}

二、定义枚举的构造函数、字段和方法

//如何让设计出来的枚举拥有构造函数,拥有构造函数自带的方法以封装更多的信息
public class Demo{
	public void test(){
		print(Grade.B);//只能传ABCDE指定的值
	}
	public void print(Grade g){//A B C D E
		String value = g.getValue();
		System.out.println(value);
	}
}
enum Grade{//A100-90   B89-80   C79-70   D69-60   E59-0
	A("100-90"),B("89-80"),C("79-70"),D("69-60"),E("59-0");
	//Grade相当于一个类,下面为类声明了一个有参的构造函数,不同于之前new出来的无参构造函数,所以new出来的对象需要加参数
	
	private String value;//封装每个对象对象的分数
	private Grade(String Value){
		this.value = value;
	}
	public String getValue(){
		return this.value;
	}
	
}
三、带有抽象方法的枚举
//如何在枚举中设计一个方法,使得调用这个方法时得到中文成绩
public class Demo{
	public void test(){
		print(Grade.B);//只能传ABCDE指定的值
	}
	public void print(Grade g){//A B C D E
		String value = g.localValue();
		System.out.println(value);
	}
}

enum Grade{//A100-90 优秀  B89-80良好    C79-70差   D69-60及格   E59-0不及格
	A("100-90"){//带有抽象方法的抽象类不能直接new出实例对象,需要在new时实现这个抽象方法
		public String localValue(){
			return("优秀");
		}
	}
	,B("89-80"){
		public String localValue(){
			return("良好");
		}
	}
	,C("79-70"){
		public String localValue(){
			return("差");
		}
	}
	,D("69-60"){
		public String localValue(){
			return("及格");
		}
	}
	,E("59-0"){
		public String localValue(){
			return("不及格");
		}
	};
	
	private String value;//封装每个对象的分数
	private Grade(String Value){
		this.value = value;
	}
	public String getValue(){
		return this.value;
	}
	public abstract String localValue();//把方法声明为抽象方法,调用时可以针对不同的数据返回不同的值
}

四、枚举类的特性

1.枚举类也是一种特殊形式的Java类;

2.枚举类中声明的每一个枚举值代表枚举类的一个实例对象;

3.枚举类的构造函数必须是私有的;

4.枚举类可以实现接口、或继承抽象类;

5.若枚举类只有一个枚举值,则可以当作单例设计模式。

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值