1. 程式人生 > >匿名內部類抽象實現列舉

匿名內部類抽象實現列舉

/*
 星期天: Sun.=Sunday 星期一: Mon.=Monday 星期二: Tues.=Tuesday 星期三: Wed.=Wednesday 
 星期四: Thur.=Thursday 星期五: Fri.=Friday 星期六: Sat.=Saturday 
 */
public abstract class WeekDayAbstract {
	// 建構函式私有化 不可以在new例項物件
	private WeekDayAbstract() {}
	// 採用匿名內部類的實現方式
	public static final WeekDayAbstract SUNDAY = new WeekDayAbstract() {
		public WeekDayAbstract NextDay() {
			return MONDAY;
		}
	};
	public static final WeekDayAbstract MONDAY = new WeekDayAbstract() {
		public WeekDayAbstract NextDay() {
			return TUESDAY;
		}
	};
	public static final WeekDayAbstract TUESDAY = new WeekDayAbstract() {
		public WeekDayAbstract NextDay() {
			return WEDDAY;
		}
	};
	public static final WeekDayAbstract WEDDAY = new WeekDayAbstract() {
		public WeekDayAbstract NextDay() {
			return THURDAY;
		}
	};
	public static final WeekDayAbstract THURDAY = new WeekDayAbstract() {
		public WeekDayAbstract NextDay() {
			return FRIDAY;
		}
	};
	public static final WeekDayAbstract FRIDAY = new WeekDayAbstract() {
		public WeekDayAbstract NextDay() {
			return SATDAY;
		}
	};
	public static final WeekDayAbstract SATDAY = new WeekDayAbstract() {
		public WeekDayAbstract NextDay() {
			return SUNDAY;
		}
	};
	// 定義NextDay()方法
	public abstract WeekDayAbstract NextDay();
	public String toString() { // 重寫ToString方法
		return this == MONDAY ? "星期一" : this == TUESDAY ? "星期二"
				: this == WEDDAY ? "星期三" : this == THURDAY ? "星期四"
						: this == FRIDAY ? "星期五" : this == SATDAY ? "星期六"
								: "星期日";
	}
}