枚举

    枚举类具有如下特性:
   a. 枚举类是一种特殊形式的java类
   b. 枚举类中声明的每一个枚举值代表枚举类的一个实例对象
   c. 与java中的普通类一样,在声明枚举类时,也可以声明属性.方法和构造函数,但枚举类的构造函数必须为私有的,否则报错.
原因:声明为枚举类型是为了值固定,如果构造公有了,岂不是南辕北辙.
   e. 枚举类也可以说实现接口或继承 抽象类
   f.JDK5中扩展了switch语句,它除了可以接收int.byte.char.short外,还可以接收一个枚举类型.
   g.若枚举只有一个枚举值,则可以当做单态设计模式使用的!


1.枚举的作用

一些程序在运行时,它的数据不能是任意的,而必须是一定范围内的值,JDK5.0之后采用枚举来解决这种问题.

JDK新增了enum关键字用于定义枚举类.


2.枚举的定义

枚举相当于一个类;

枚举中的数据相当于类中的对象.

enum action{        //class

      A,B,C,D,E;   //Object

}     

public void Action(action a){} //只能传入A,B,C,D,E


3.枚举中构造函数,字段和方法的定义

enum Grade {
        A("90-100") ,  //定义有参的枚举对象
	B("89-80") ,
	C("79-70") ,
	D("69-60") ,
	E("59-0") ;
	//字段
	private String score;
	//有参构造函数
	private Grade(String score) {
		this.score = score;
	}
	//获得枚举对象中的值
	public String getScore() {
		return this.score;
	}

}
4.带抽象方法的枚举

enum Grade {
	
	//实现枚举中的抽象方法,使得每个枚举对象有具体的实现
	A("90-100") {
		public String localScore() {
			return "very good!";
		}
	},
	B("89-80") {

		public String localScore() {
			return "良好";
		}
	},
	C("79-70") {

		public String localScore() {
			return "一般";
		}

	},
	D("69-60") {

		public String localScore() {
			return "及格";
		}
	},
	E("59-0") {

		public String localScore() {
			return "重读吧!";
		}
	};
	
	// 字段
	private String score;

	// 有参构造函数
	private Grade(String score) {
		this.score = score;
	}

	// 方法
	public String getScore() {
		return this.score;
	}
        //定义为抽象方法,可以针对每一个枚举对象获得不同的数据
	public abstract String localScore();

}

5.枚举小练习

package cn.itcast;

import org.junit.Test;

public class EnumDemo {
	@Test
	public void test() {
		print(weekday.Fou);
	
        //枚举的调用
	public void print(weekday w) {

		String china = w.getChina();
		System.out.println(china);

	}
}

enum weekday {
	Mon("星期一"), Tue("星期二"), Tir("星期三"), Fou("星期四"), Fri("星期五"), Sat("星期六"), Sun(
			"星期天");
	private String china;

	private weekday(String china) {
		this.china = china;
	}

	public String getChina() {
		return china;
	}

}
6.枚举的小知识点

Stringname()
返回此枚举常量的名称,在其枚举声明中对其进行声明。

intordinal()
返回枚举常量的序数(它在枚举声明中的位置,其中初始常量序数为零)。

StringtoString()
返回枚举常量的名称,它包含在声明中。

static
<T extends Enum<T>>
T
valueOf(Class<T> enumType,String name)
返回带指定名称的指定枚举类型的枚举常量。

API中没有的一个方法,但在java中存在.

  枚举数组  values().




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值