Java中你所不知道的枚举类(Enum),枚举中定义抽象方法

枚举类型在C#或C++,java,VB等一些计算机编程语言中是一种基本数据类型而不是构造数据类型,而在C语言等计算机编程语言中是一种构造数据类型 。 它用于声明一组命名的常数,当一个变量有几种可能的取值时,可以将它定义为枚举类型。

/**
 * 枚举测试类
 * @author yuxuan
 *
 */
public class EnumTest {

	public static void main(String[] args) {
		
		System.out.println(EnumColorPlus1.GREEN);
		System.out.println(EnumColor2.RED.getColor());
		for(Operation op:Operation.values()) {
			System.out.println(op.eval(2, 2));
		}
	}
}

/**
 * 
 * @author yuxuan
 *
 */
enum EnumColor{
	YELLOW,GREEN;
}

/**
 * 
 * @author yuxuan
 *
 */
enum EnumColorPlus{
	/*
	   当定义的枚举变量有描述的时候,必须为其定义属性和对应的构造函数
	*/
	YELLOW("黄色"),GREEN("绿色");
	
	private String label;
	
	EnumColorPlus(String label) {
		this.label = label;
	}
}

/**
 * 
 * @author yuxuan
 *
 */
enum EnumColorPlus1{
	/*
	   当定义的枚举变量有描述的时候,必须为其定义属性和对应的构造函数
	*/
	YELLOW("黄色","#234323"),GREEN("绿色","#erwerwe");
	
	private String label; //相当于黄色
	private String tone; //相当于色值
	
	public String getLabel() {
		return label;
	}

	public String getTone() {
		return tone;
	}

	EnumColorPlus1(String label,String tone) {
		this.label = label;
		this.tone = tone;
	}
}

/**
 * 
 * @author yuxuan
 *
 */
enum Operation{
	
	/**
	 * 带有静态代码块的可以理解为抽象方法的实现,定义个抽线方法,在具体的属性后用静态代码块去实现
	 */
	
	
	PLUS {
		public int eval(int a,int b) {
			return a + b;
		}
	},
	
	MINUS{
		public int eval(int a,int b) {
			return a - b;
		}
	},
	
	MIULTI{
		public int eval(int a,int b) {
			return a * b;
		}
	},
	
	DIVIDE{
		public int eval(int a,int b) {
			return a / b;
		}
	};
	
	public abstract int eval(int a,int b);
	
}

/**
 * 
 * @author yuxuan
 *
 */
enum EnumColor2{
	
	
	RED(1){
		public String getColor() {
			return "red";
		}
	},
	
	YELLOW(2){
		public String getColor() {
			return "yellow";
		}
	};
	
	private Integer color;
	
	EnumColor2(){
		
	}
	EnumColor2(Integer color){
		this.color = color;
	}
	
	//定义个一抽象方法,在上面去实现
	public abstract String getColor();
}

有问题可以在下面评论,技术问题可以私聊我。

发布了106 篇原创文章 · 获赞 101 · 访问量 56万+

猜你喜欢

转载自blog.csdn.net/qq_24434671/article/details/95478196
今日推荐