欢迎访问悦橙教程(wld5.com),关注java教程。悦橙教程  java问答|  每日更新
页面导航 : > > 文章正文

JAVA基础加强之枚举,java基础枚举

来源: javaer 分享于  点击 35403 次 点评:243

JAVA基础加强之枚举,java基础枚举



枚举是啥?

在学习交通灯跟银行调度系统的时候,里面都用到了枚举~起初并不理解枚举的用法,后总结觉得枚举是...这样说吧,一个星期有七天,这样我们就弄个星期类,但是创建对象的时候,我们可以随意的创建星期几的,或者不是星期的星期实例对象,这样就很不安全,很混乱,那就使用枚举~在里面定义好有多少个这个类的实例对象,只能使用这些的实例对象.就像视频里举例一样:

首先是用普通类的方式来实现枚举的功能的话,形式会是:

public class WeekDay2 {
	private WeekDay2(){}
	public final static WeekDay2 星期一 =new WeekDay2();
	public final static WeekDay2 星期二 =new WeekDay2();
	public final static WeekDay2 星期三 =new WeekDay2();
	public void NextDay()
	{	
		int i=0;
		if(this==星期一){i=0;}
		if(this==星期二){i=1;}
		if(this==星期三){i=2;}
		switch(i)
		{
			case 0:System.out.println("下周是星期二");break;
			case 1:System.out.println("下周是星期三");break;
			case 2:System.out.println("下周是星期四");break;
		}
	}
}
枚举类的话形式会是:

public enum WeekDay {
星期一,星期二,星期三,星期四,星期五,星期六,星期日;
	public void NextDay()
	{
		switch(this)
		{
			case 星期一:System.out.println("下个星期是星期二");break;
			case 星期二:System.out.println("下个星期是星期三");break;
			case 星期三:System.out.println("下个星期是星期四");break;
			case 星期四:System.out.println("下个星期是星期五");break;
			case 星期五:System.out.println("下个星期是星期六");break;
			case 星期六:System.out.println("下个星期是星期日");break;
			case 星期日:System.out.println("下个星期是星期一");break;
		}
	}
}
主方法程序:

public class EumTest {

	public static void main(String[] args) {
		WeekDay.星期一.NextDay();
		WeekDay2.星期二.NextDay();
	}

}
显示结果为:



在枚举里,有一些地方是需要注意的.

一个是枚举的构造方法,

枚举的构造方法一定是私有的~所以就算要覆盖,或重载也要弄成私有的!!!

还有就是枚举的构造方法,弄成有参构造方法,其应用如下面例子(其实在交通灯里程序讲过);

就是把前面的程序简单话的话,在创建对象的时候就定义好下周是星期几的话,就简单多了.

public enum WeekDay {
//------这个一定要在开头-------------------------------------
星期一("星期二"),星期二("星期三"),星期三("星期四"),
星期四("星期五"),星期五("星期六"),星期六("星期日"),星期日("星期一");
//-------------------------------------------------------------
	String Next=null;
	public void NextDay()
	{
		System.out.println("下周是"+Next);
	}
	//构造方法
	private WeekDay(String Next)
	{
		this.Next=Next;
	}
}

一个是带有抽象方法的枚举

如下面程序:

注意,用大括号括起抽象方法的覆盖方法.

public enum WeekDay3 {
星期一("星期二"){
		public WeekDay3 doing()
		{
			System.out.println("今天上课");
			return 星期一;
		}
	},
星期二("星期三"){
		public WeekDay3 doing()
		{
			  System.out.println("今天上课");
			  return 星期二;
		} 
	},
星期三("星期四"){	
		  public WeekDay3 doing()
		{
			System.out.println("今天上课");
			return 星期三;
		}
	},
星期四("星期五"){	
		public WeekDay3 doing()
		{
			System.out.println("休息");
			return 星期四;
		}
	},
星期五("星期六"){	
		public WeekDay3 doing()
		{
			System.out.println("休息");
			return 星期五;
		}
	};
String Next=null;
public abstract WeekDay3 doing();//抽象方法
private WeekDay3(String Next)
	{
		this.Next=Next;
	}
public void NextDay()
	{
		System.out.println("下周是"+Next);
	}
}


最后还有一点就是,当枚举只有一个成员时,就可以作为一种单例的实现方式.!!!


相关文章

    暂无相关文章
相关栏目:

用户点评