带有无参构造方法、有参构造方法的枚举

枚举就相当于一个类,其中也可以定义构造方法,成员变量,普通方法和抽象方法。


枚举元素必须位于枚举体中的最开始的位置,枚举元素类表的后要有分号与其他成员分隔。把枚举中的成员方法或变量等放在枚举元素的前面,编译器报告错误。


带有构造方法的枚举:
构造方法必须定义成私有的。
如果有多个构造方法,该如何选择哪个构造方法?
枚举元素MON和MON()效果一样,都是调用默认的构造方法。
带方法的枚举
定义枚举TrafficLamp
实现普通的next方法
实现抽象的next方法:每个元素分别是由枚举类的子类来生成的实例对象,这些子类采用类似内部类的方式进行定义。
增加上表示时间的构造方法。

枚举只有一个成员时,就可以作为一种单例的实现方式。

package day02;

import day02.EnumTest.WeekDay.TrafficLamp;

public class EnumTest {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		WeekDay today=WeekDay.SUN;
		
		System.out.println(today);	//枚举自动实现了toString方法
		
		System.out.println(today.name());	//枚举自己的名字
		
		System.out.println(today.ordinal());	//自己的排行
		
		System.out.println(today.getClass());	//得到对象所在的类名
		
		System.out.println(WeekDay.valueOf("MON").toString());  //将传来的字符串编程枚举类的对象
		
		System.out.println(WeekDay.values().length);	//将枚举对象转换成一个数组,方便使用迭代遍历枚举中的元素
	
		TrafficLamp tl=TrafficLamp.RED;
		System.out.println(tl.nextLamp());
	}
	
	//定义一个枚举
	public enum WeekDay{
		//枚举元素的后面加上一对(),里面写上实际参数,表示该常量需要被有参数的构造方法初始化
		//()中不写任何的实际参数,表示该常量需要被无参数的构造方法初始化。
		SUN("星期天",7),MON,TUE,WED,THU,FRI,SAT;
		//无参的构造方法
		private WeekDay(){	//构造方法必须要定义在所有元素的后面,而且必要私有
			System.out.println("-----调用无参数------");
		}
		//有参数的构造方法
		private WeekDay(String str,int day){	//传入需要的形式参数的类型就可以了
			System.out.println("*****调用有参数******");
		}
		//交通灯的枚举
		public enum TrafficLamp{
			RED("红灯",30){
				public TrafficLamp nextLamp(){	//是由TrafficLamp的子类实现
					return GREEN;
				}
			},
			GREEN("绿灯",30){
				public TrafficLamp nextLamp(){
					return YELLOW;
				}
			},
			YELLOW("黄灯",5){
				public TrafficLamp nextLamp(){
					return RED;
				}
			};
			//无参数的构造方法
			private TrafficLamp(){
				
			}
			//获取下一个交通灯的方法,把它抽象,由Trafficlamp的子类去实现
			public abstract TrafficLamp nextLamp();
			
			//增加一个时间的构造方法,用来在实例化对象的时候初始化。
			private String name;
			private int time;
			private TrafficLamp(String name,int time){
				this.name=name;	//把传过来的值赋值给我的成员变量
				this.time=time;
				System.out.println("------交通灯的有参构造方法------");
			}
		}
	}

}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值