枚举类型

枚举类型

枚举类型的本质还是一个类,默认是final修饰的,且默认继承自父类java.lang.Enum,构造器是自动生成的且是私有的,表示不可创建对象,使用反射也不行。

public enum User {
	STUDENT,TEACHER;
}

STUDENT和TEACHER是枚举元素,每一个枚举元素都是这个枚举类的一个实例,默认是用public static final修饰的

获得枚举对象
1.User u = User.STUDENT;
2.User u = User.valueOf(“STUDENT”);
3.User u = Enum.valueOf(User.class,“STUDENT”);
且无论通过何种方式取得的对象,都是同一个对象,即通过= =去比较地址值,都是一样的,结果是true

获得一个枚举类型的所有对象

User[] values = User.values();
for(User u:values){
	System.out.println(u);
}

枚举类型的方法
枚举对象默认只能调用父类Enum中的方法或者Object中的方法,但是也可以自定义方法。枚举也是类,所以枚举中也可以写方法,包括静态方法。

public class TestObj{
    public static void main(String[] args){
    	User u = User.STUDENT;
    	u.say();
    	User.run();
    }
}
enum User {
	STUDENT,TEACHER;
	public void say() {
		System.out.println("say");
	}
	public static void run() {
		System.out.println("run");
	}
}

枚举类型也可以定义在自己的属性,枚举类型中可以定义构造器,但是必须是私有的,默认也是私有的.

枚举类型可以写抽象方法
枚举类型中可以编写抽象方法,但是这时候其每个对象都必须去实现这个抽象方法,否则编译报错。

public class TestObj{
    public static void main(String[] args){
    	User u = User.STUDENT;
    	u.stop();
    }
}
enum User {
	STUDENT {
		@Override
		public void stop() {
			// TODO Auto-generated method stub
			System.out.println("stop");
		}
	},TEACHER {
		@Override
		public void stop() {
			// TODO Auto-generated method stub
			System.out.println("stop");
		}
	};
	public abstract void stop();
}

枚举类型可以实现接口
枚举类型实现接口后,必须实现接口中的所有方法,或者在每个对象中分别实现接口中所有方法。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值