枚举类的对象是有限个
对象个数 一个可以看做单例模式的实现 多个 为枚举类
1 如何定义
cccccccc
1 私有化类的构造器。
2 成员变量如果声明为final。要在构造器中初始化,不允许被修改、
3 通过公共方法 调用属性。
4 创建枚举类的对象
单例模式中 ,通过公共方法调用。 也可以通过类来调用。
要用final修饰!!!! 声明为 public static final
使用enum关键字来定义枚举类
1 定义时必须先声明 (把final关键字放在最上面);
2
用枚举声明之后 图中蓝色部分可以省略 被改之后原来用;分割 应该为逗号, 最后一个用; 即可
常用方法:https://blog.csdn.net/kdc18333608478/article/details/72845587
可以让不同的枚举类对象调用被抽象的抽象方法,执行的效果不同。(相当于每一个对象重写抽象方法)
代码
package 面向对象;
public class testseason {
public static void main(string[] args) {
season spring=season.spring;
system.out.println(spring);
spring.show();
system.out.println(spring.getseasonname());
system.out.println();
// 方法一
// season[] seasons =season.values();
// for (int i = 0; i < seasons.length; i ) {
// system.out.println(seasons[i]);
// }
// 方法2 要求传入的形参是枚举类对象的名字
string str = "spring";
season sea = season.valueof(str);
system.out.println(sea);
system.out.println();
}
interface info
{
void show();
}
enum season implements info
{
spring ("spring", "chunnuanhuakai")
{
public void show() {
system.out.println("i love you");
}
},
summer("summer","re")
{
public void show(){
system.out.println("sorry");
}
};
public final string seasonname;
public final string seasondesc;
private season(string seasonname,string seasondesc)
{
this.seasondesc=seasonname;
this.seasonname=seasonname;
}
public string getseasonname()
{
return seasonname;
}
public string tostring()
{
return "season[ name=" seasonname ", seasondesc=" seasondesc "]";
}
}
}
方法一结果
方法二结果