Enum Class (枚举类)- 入门


枚举类

如果一个类的对象是有限和固定的,则可以使用枚举类。本笔记,主要介绍基本的枚举类使用:基本语法和实例。

目录

正文

1. 枚举类-语法

1.1 枚举类与普通类相同之处

* enum 与 class、interface 具有相同地位; * 可以继承多个接口; * 可以拥有构造器、成员方法、成员变量;

1.2 枚举类与普通类不同之处

* 默认继承 java.lang.Enum 类,所以不能继承其他父类;其中 java.lang.Enum 类实现了 java.lang.Serializable 和 java.lang.Comparable 接口; * 使用 enum 定义,默认使用 final 修饰,因此不能派生子类; * 构造器默认使用 private 修饰,且只能使用 private 修饰; * 枚举类所有实例必须在第一行给出,默认添加 public static final 修饰,否则无法产生实例;

1.3 实例

```java public class Demo {
public static void main(String[] args) {
	for(Season s : Season.values()) {	//values() 方法,返回 Season[] 枚举值集合
		new SeasonTest().judge(s);
	}
}

}

enum Season {
SPRING, SUMMER, FALL, WINTER;
}

class SeasonTest {

public void judge(Season s) {
	switch(s) {	//JDK 1.5 之后,switch 支持枚举类型;且,case 后面可以直接书写枚举值,不需要限定
	case SPRING:
		System.out.println("Spring");
		break;
	case SUMMER:
		System.out.println("Summer");
		break;
	case FALL:
		System.out.println("Fall");
		break;
	case WINTER:
		System.out.println("Winter");
		break;
	}
}


<h3 id="1.4"> 1.4  成员变量、构造器和方法</h3>
#### 1.4.1 成员变量实例
```java
public class Demo {
	public static void main(String[] args) {
		// valueOf 是 Enum 中的静态方法,用于:返回指定枚举类中,指定名称的枚举值
		// 源码声明:
		// public static <T extends Enum<T>> T valueOf(Class<T> enumType, String name)
		Gender tom = Gender.valueOf(Gender.class, "FEMALE");
		tom.name = "female";
		System.out.println(tom + " + " + tom.name);
	}
}

enum Gender {
	MALE, FEMALE;
	public String name;
}

1.4.2 构造器

enum Gender {
	MALE("男"), FEMALE("女");
	private final String name;    //应该设置成 private final 
	private Gender(String name) {    // 应该设置成 private
		this.name = name;
	}
	
	public String getName() {
		return this.name;
	}
}

1.4.3 方法

//1. 实现接口方法(1)
interface Info {
	void info();
}
enum Gender implements Info{
	MALE("男"), FEMALE("女");
	private final String name;
	private Gender(String name) {
		this.name = name;
	}
	
	public String getName() {
		return this.name;
	}

	@Override
	public void info() {
		// 此时两个值调用的方法是相同的
	}
}
////1. 实现接口方法(2)
interface Info {
	void info();
}
enum Gender implements Info{
	MALE("男") {

		@Override
		public void info() {
			//  分别实现接口方法
			
		}
		
	}, 
	FEMALE("女") {

		@Override
		public void info() {
			// 分别实现接口方法
			
		}
		
	};
	private final String name;
	private Gender(String name) {
		this.name = name;
	}
	
	public String getName() {
		return this.name;
	}

}
//2. 实现 Enum 中的抽象方法
enum Gender {
	MALE("男"){

		@Override
		public void info() {
			// TODO Auto-generated method stub
			
		}
		
	},FEMALE("女"){

		@Override
		public void info() {
			// TODO Auto-generated method stub
			
		}
		
	};
	private final String name;
	private Gender(String name) {
		this.name = name;
	}
	
	public String getName() {
		return this.name;
	}
	
	public abstract void info();

}


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM