1 枚举概述:
枚举:现实生活中有很多事物都是有限个的,比如一年只有四个季节,对应到java类中,一个季节类只能创建出4个对象,不能再多像这样描述一个只有有限个对象,我们把这个类定义为枚举类。
- 在JDK1.5之前呢,我们使用自定义枚举类
- 在JDK1.5之后,java提供了enum关键字来定义枚举类
JDK1.5之前注意事项:
- 1 成员变量私有化且用final关键字修饰,外界不能去修改也不能直接获取
- 2 构造方法私有化使用private关键字修饰,保证类的个数个有限;
- 3 在枚举类中创建对象,因为外界无法创建对象,又想让外界获取,所以改成静态的,可以直接通过类名访问
- 4 提供公共的get方法获得属性;
package com.bigdat.java.day19;
import javax.swing.*;
/*
枚举:现实生活中有很多事物都是有限个的,比如一年只有四个季节,对应到java类中,一个季节类只能创建出4个对象,不能再多
像这样描述一个只有有限个对象,我们把这个类定义为枚举类。
在JDK1.5之前呢,我们使用自定义枚举类
在JDK1.5之后,java提供了enum关键字来定义枚举类
*/
class Season1{
private final String SEASON_NAME;
private final String SEASON_DESC;
private Season1(String SEASON_NAME, String SEASON_DESC) {
this.SEASON_NAME = SEASON_NAME;
this.SEASON_DESC = SEASON_DESC;
}
public static final Season1 SPRING = new Season1("Spring","春意黯然");
public static final Season1 SUMMER = new Season1("Summer","夏日炎炎");
public static final Season1 AUTUMN = new Season1("Autumn","硕果累累");
public static final Season1 WINTER = new Season1("Winter","寒风凌冽");
public String getSEASON_NAME() {
return SEASON_NAME;
}
public String getSEASON_DESC() {
return SEASON_DESC;
}
@Override
public String toString() {
return "Season1{" +
"SEASON_NAME='" + SEASON_NAME + '\'' +
", SEASON_DESC='" + SEASON_DESC + '\'' +
'}';
}
}
public class EnumDemo1 {
public static void main(String[] args) {
//获取春天并使用
Season1 spring = Season1.SPRING;
System.out.println(spring.getSEASON_NAME()+"-----"+ spring.getSEASON_DESC());
}
}
在JDK1.5之后,java提供了enum关键字来定义枚举类
- 注意事项:在枚举类中创建对象,因为外界无法创建对象,又想让外界获取,所以改成静态的,可以直接通过类名访问在enum修饰的枚举类中必须放在第一个位置。!!直接-类名(),类名()……;
代码如下:(还可以用匿名内部类实现方法)
package com.bigdat.java.day19;
interface Play{
void fun();
}
enum Season2 implements Play{
SPRING("Spring","春意黯然"){
@Override
public void fun() {
System.out.println("看我像不像匿名内部类");
}
},
SUMMER("Summer","夏日炎炎"){
@Override
public void fun() {
}
},
AUTUMN("Autumn","硕果累累"){
@Override
public void fun() {
}
},
WINTER("Winter","寒风凌冽"){
@Override
public void fun() {
}
};
private final String SEASON_NAME;
private final String SEASON_DESC;
private Season2(String SEASON_NAME, String SEASON_DESC) {
this.SEASON_NAME = SEASON_NAME;
this.SEASON_DESC = SEASON_DESC;
}
public String getSEASON_NAME() {
return SEASON_NAME;
}
public String getSEASON_DESC() {
return SEASON_DESC;
}
}
public class EumnDemo3 {
public static void main(String[] args) {
Season2 spring = Season2.SPRING;
System.out.println(spring.getSEASON_DESC()+"--------"+spring.getSEASON_DESC());
spring.fun();
}
}