标签:bubuko ... 枚举 return 问题 setname ase highlight int
如果一个类的实例是有限且确定的,那么可以使用枚举类。比如:季节类,只有春夏秋冬四个实例。
枚举类使用enum进行创建,其实例必须从”第一行“开始显示写出。
enum Season{ SPRING,SUMMER,FALL,WINTER;//默认public static final,这都是Season类的对象。
}
特点:
1、枚举类的对象默认都是public static final
2、枚举类的构造器都是private,所以无法在外部创建其实例,这也决定了枚举类实例的个数的确定性(写了几个就是几个)。
3、enum类如果不是abstract的,就默认是final的
4、enum类默认extends java.lang.Enum,所以无法再继承其他类
enum类默认被final修饰的情况下,是无法有子类的。但是在《疯狂Java讲义》中是这么说的:
那么,问题来了:
enum Season{ // SPRING,SUMMER,FALL,WINTER;//默认public static final,这都是Season类的对象。 SPRING{ public void show(){ System.out.println("I‘m Spring"); } },SUMMER,FALL,WINTER; private String name; //构造器默认且只能是private Season(){ System.out.println("Season run...");//运行四次 } public void setName(){ //Java5开始,switch方法支持枚举类对象。 switch(this){ case SPRING: name="春"; break; case SUMMER: name="夏"; break; case FALL: name="秋"; break; case WINTER: name="冬"; break; } } public void setName1(String name){ this.name=name; } public String getName(){ return name; } public void show(){ System.out.println("I‘m show"); } }
运行结果:
问题:SPRING是Season匿名子类的对象,但是前面已经说明Season类是final的。
标签:bubuko ... 枚举 return 问题 setname ase highlight int
原文地址:https://www.cnblogs.com/xiangguoguo/p/9061678.html