✈【【零基础 快速学Java】韩顺平 零基础30天学会Java】
创建季节(Season)对象
举个栗子
package com.dingjiaxiong.enum_;
/**
* ClassName: Enumeration01
* date: 2022/9/4 13:17
*
* @author DingJiaxiong
*/
public class Enumeration01 {
public static void main(String[] args) {
Season spring = new Season("春天","温暖");
Season winter = new Season("冬天","寒冷");
Season summer = new Season("夏天","炎热");
Season autumn = new Season("秋天","凉爽");
// Season other = new Season("红天","~~~~~~~~");
}
}
class Season{ //类
private String name;
private String desc;
public Season(String name, String desc) {
this.name = name;
this.desc = desc;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getDesc() {
return desc;
}
public void setDesc(String desc) {
this.desc = desc;
}
}
【举个栗子】
package com.dingjiaxiong.enum_;
/**
* ClassName: Enumeration02
* date: 2022/9/4 13:24
*
* @author DingJiaxiong
*/
public class Enumeration02 {
public static void main(String[] args) {
System.out.println(Season.AUTUMN);
System.out.println(Season.SPRING);
}
}
class Season{ //类
private String name;
private String desc;
//定义四个固定对象
public static final Season SPRING = new Season("春天","温暖");
public static final Season WINTER = new Season("冬天","寒冷");
public static final Season AUTUMN = new Season("秋天","凉爽");
public static final Season SUMMER = new Season("夏天","炎热");
private Season(String name, String desc){
this.name = name;
this.desc = desc;
}
public String getName() {
return name;
}
public String getDesc() {
return desc;
}
@Override
public String toString() {
return "Season{" +
"name='" + name + '\'' +
", desc='" + desc + '\'' +
'}';
}
}
运行结果

【举个栗子】使用enum实现前面的案例
package com.dingjiaxiong.enum_;
/**
* ClassName: Enumeration03
* date: 2022/9/4 13:30
*
* @author DingJiaxiong
*/
public class Enumeration03 {
public static void main(String[] args) {
System.out.println(Season.SPRING);
System.out.println(Season.WINTER);
}
}
enum Season{ //类
SPRING("春天","温暖"),WINTER("冬天","寒冷"),AUTUMN("秋天","凉爽"),SUMMER("夏天","炎热");
private String name;
private String desc;
private Season(){}
private Season(String name, String desc) {
this.name = name;
this.desc = desc;
}
public String getName() {
return name;
}
public String getDesc() {
return desc;
}
@Override
public String toString() {
return "Season{" +
"name='" + name + '\'' +
", desc='" + desc + '\'' +
'}';
}
}
运行结果

说明:使用关键字 enum 时,会隐式继承 Enum 类, 这样我们就可以使用 Enum 类相关的方法。

【举个栗子】
package com.dingjiaxiong.enum_;
import java.security.PublicKey;
/**
* ClassName: EnumMethod
* date: 2022/9/4 13:39
*
* @author DingJiaxiong
*/
public class EnumMethod {
public static void main(String[] args) {
Season autumn = Season.AUTUMN;
//输出枚举对象的名字
System.out.println(autumn.name());
//输出编码,从0开始
System.out.println(autumn.ordinal()); //3
//含有定义的所有枚举对象
Season[] values = Season.values();
System.out.println("===遍历取出枚举对象(增强for)===");
for(Season season : values){
System.out.println(season);
}
//valueOf:将字符串转换成枚举对象【要求字符串必须为已有的常量名,否则报异常】
Season autumn1 = Season.valueOf("AUTUMN");
System.out.println("autumn1 = " + autumn1);
System.out.println(autumn == autumn1);
//compareTo:比较两个枚举常量,比较的就是编号
System.out.println(Season.AUTUMN.compareTo(Season.SUMMER)); // 3 - 4
}
}
运行结果

【增强for】
package com.dingjiaxiong.enum_;
/**
* ClassName: ForTest
* date: 2022/9/4 13:46
*
* @author DingJiaxiong
*/
public class ForTest {
public static void main(String[] args) {
int[] nums = {1 ,2 ,9};
//普通的for循环
System.out.println("====普通的for循环====");
for (int i = 0; i < nums.length; i++) {
System.out.println(nums[i]);
}
System.out.println("====增强的for====");
//依次从nums数组中取出数据赋给i,如果取出完毕,退出for
for (int i : nums){
System.out.println("i = " + i);
}
}
}
运行结果

使用 enum 关键字后,就不能再继承其它类了,因为 enum 会隐式继承 Enum,而 Java 是单继承机制。
枚举类和普通类一样,可以实现接口
enum 类名 implements 接口1,接口2{}
【举个栗子】
package com.dingjiaxiong.enum_;
/**
* ClassName: EnumDetail
* date: 2022/9/4 13:50
*
* @author DingJiaxiong
*/
public class EnumDetail {
public static void main(String[] args) {
Music.CLASSICMUSIC.playing();
}
}
class A{}
//报错,不能继承
//enum Season3 extends A{
//
//}
interface IPlaying{
public void playing();
}
enum Music implements IPlaying{
CLASSICMUSIC;
@Override
public void playing() {
System.out.println("播放好听的音乐...");
}
}
运行结果
