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();
}

有問題可以在下面評論,技術問題可以私聊我。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章