java基础部分学习:9、枚举

1、自定义类实现枚举:

1、构造器私有化。

2、本类内部创建一组对象。

3、对外暴露对象:为对象添加 public static final 修饰符。

4、不提供set方法:因为枚举对象值通常为只读。

public static void main(String[] args) {
	System.out.println(Season.SPRING);
}

class Saeson {
	private String name;
	private String desc;

	// 3、在类的内部直接定义4个固定对象
	public static final Season SPRING = new Season("春天","温暖");
	public static final Season SUMMER= new Season("夏天","炎热");
	public static final Season AUTUMN= new Season("秋天","凉爽");
	public static final Season WINTER= new Season("冬天","寒冷");

	// 1、构造器私有化,防止直接new
	private SeasonString name,String desc) {
		this.name = name;
		this.desc = desc;
	}

	// 2、去掉set方法
	public String getName() {
		return name;
	}
	
	public String getDesc() {
		return desc;
	}
}

2、使用enum关键字来实现枚举:

public static void main(String[] args) {
	System.out.println(Season.SPRING);
}

enum Saeson {   // 1、使用enum关键字替代class
	SPRING("春天","温暖"),WINTER("夏天","炎热"),AUTUMN("秋天","凉爽"),WINTER("冬天","寒冷");   // 2、常量对象写在最前面,多个用逗号间隔。

	private String name;
	private String desc;
	// 1、构造器私有化,防止直接new
	private SeasonString name,String desc) {
		this.name = name;
		this.desc = desc;
	}

	// 2、去掉set方法
	public String getName() {
		return name;
	}
	
	public String getDesc() {
		return desc;
	}
}
2.1、注意事项

1、当我们使用enum关键字开发一个枚举类时,默认会继承一个Enum类,而且是一个final类。

2、如果使用的是无参构造器创建枚举对象,那么可以省略小括号。

SPRING,WINTER,AUTUMN,WINTER;

3、枚举对象放在枚举类第一行。

练习题:
public static void main(String[] args) { 
	Gender boy1 = Gender.BOY;    // 将枚举对象赋给了boy1
	Gender boy2 = Gender.BOY;    // 将枚举对象赋给了boy2
	System.out.println(boy);  // BOY 直接输出一个对象就是默认调用Gender的toString方法,但是因为Gender没有这个方法,就会调用他的父类enum的tostring方法。
	/*
	enum的tostring方法:
	public String toString() {
		return name;   直接返回对象名
	}
	*/
	System.out.println(boy1 == boy2);
}

enum Gender {
BOY,GIRL;
}

enum类常用方法:

1、toString方法:返回当前对象名,子类可以重写该方法。

2、name方法:返回当前对象名。

3、ordinal方法:返回当前对象的位置号:从0开始

4、values:返回当前枚举类中所有常量,以数组形式.

5、valueOf:将字符串转化为枚举对象,如果是已有的则匹配,否则报错。

6、compareTo:比较两个枚举常量,值是两个常量编号相减。

public static void main(String[] args) {
	System.out.println(Season.SPRING);
	Season autumn = Season.AUTUMN;
	System.out.println(autumn.name()):  // name方法:返回当前对象名。
	System.out.println(autumn.ordinal()); // 2它是第三个对象

	Season value = Season.valueOf("SPRING");
	System.out.println(value);

	for(Season season:values) {  // 增强型for循环
		System.out.println(season);  // 依次输出四个对象。
	}

	System.out.println(Season.AUTUMN.compareTo(Season.SUMMER));   //2-1=0
}

enum Saeson {   
	SPRING("春天","温暖"),WINTER("夏天","炎热"),AUTUMN("秋天","凉爽"),WINTER("冬天","寒冷"); 
	private String name;
	private String desc;
	
	private SeasonString name,String desc) {
		this.name = name;
		this.desc = desc;
	}

	// 2、去掉set方法
	public String getName() {
		return name;
	}
	
	public String getDesc() {
		return desc;
	}
}

增强型for循环:

int[] nums = {1,2,3};
for(int i : nums) {
	System.out.println(i);
}

枚举细节:

1、enum实现的枚举类不可以继承其它类,因为他已经继承了Eunm类。

2、enum实现的枚举类,可以实现接口

public static void main(String[] args) {
	Music.CLASSMUSIC.play();
}

interface IA {
	public void play();
}

enum Music implements IA {
	CLASSMUSIC;
	@Override
	public void play() {
		System.out.println("播放音乐");
	}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值