抚州南城网站建设,怎么在vk网站上做推广,wordpress首页显示全部内容,效果图网站源码1. 概述
1.1 是什么
枚举对应英文(enumeration, 简写 enum)枚举是一组常量的集合。可以这里理解#xff1a;枚举属于一种特殊的类#xff0c;里面只包含一组有限的特定的对象
1.2 枚举的二种实现方式
自定义类实现枚举使用 enum 关键字实现枚举
1.3 什么时候用
存在有限…1. 概述
1.1 是什么
枚举对应英文(enumeration, 简写 enum)枚举是一组常量的集合。可以这里理解枚举属于一种特殊的类里面只包含一组有限的特定的对象
1.2 枚举的二种实现方式
自定义类实现枚举使用 enum 关键字实现枚举
1.3 什么时候用
存在有限的几个值只读不需要修改
2. 测试
2.1 自定义类实现枚举 package cn.tedu.testenum;/*** Author DELTA* Date 2023-03-07-14:39* Description:*/
public class Test1 {public static void main(String[] args) {System.out.println(Season.AUTUMN);}
}
class Season{private String name;private String desc;public static final Season SPRING new Season(春天,温暖);public static final Season SUMMER new Season(夏天,炎热);public static final Season AUTUMN new Season(秋天,凉爽);public static final Season WINTER new Season(冬天,寒冷);private Season(String name, String desc) {this.name name;this.desc desc;}Overridepublic String toString() {return Season{ name name \ , desc desc \ };}public String getName() {return name;}public String getDesc() {return desc;}
}进行自定义类实现枚举有如下特点 构造器私有化本类内部创建一组对象[四个 春夏秋冬]对外暴露对象通过为对象添加 public final static 修饰符可以提供 get 方法但是不要提供 set 2.2 enum 关键字实现枚举
public class Enumeration03 {public static void main(String[] args) {System.out.println(Season2.AUTUMN);System.out.println(Season2.SUMMER);}
}
//演示使用enum关键字来实现枚举类
enum Season2 {//类//定义了四个对象, 固定.
// 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(夏天, 炎热);//如果使用了enum 来实现枚举类//1. 使用关键字 enum 替代 class//2. public static final Season SPRING new Season(春天, 温暖) 直接使用// SPRING(春天, 温暖) 解读 常量名(实参列表)//3. 如果有多个常量(对象) 使用 ,号间隔即可//4. 如果使用enum 来实现枚举要求将定义常量对象写在前面//5. 如果我们使用的是无参构造器创建常量对象则可以省略 ()SPRING(春天, 温暖), WINTER(冬天, 寒冷), AUTUMN(秋天, 凉爽),SUMMER(夏天, 炎热)/*, What()*/;private String name;private String desc;//描述private Season2() {//无参构造器}private Season2(String name, String desc) {this.name name;this.desc desc;}public String getName() {return name;}public String getDesc() {return desc;}Overridepublic String toString() {return Season{ name name \ , desc desc \ };}
}注意事项 当我们使用 enum 关键字开发一个枚举类时默认会继承 Enum 类, 而且是一个 final 类[如何证明],老师使用 javap 工具来演示 传统的 public static final Season2 SPRING new Season2(“春天”, “温暖”); 简化成 SPRING(“春天”, “温暖”) 这里必 须知道它调用的是哪个构造器. 如果使用无参构造器 创建 枚举对象则实参列表和小括号都可以省略 当有多个枚举对象时使用,间隔最后有一个分号结尾 枚举对象必须放在枚举类的行首. 如果没有重写toString方法打印的不是地址值而是返回枚举常量的名称 2.3 练习细节补充 2.4 常用方法 /*** 演示Enum类的各种方法的使用*/
public class EnumMethod {public static void main(String[] args) {//使用Season2 枚举类来演示各种方法Season2 autumn Season2.AUTUMN;//输出枚举对象的名字System.out.println(autumn.name());//ordinal() 输出的是该枚举对象的次序/编号从0开始编号//AUTUMN 枚举对象是第三个因此输出 2System.out.println(autumn.ordinal());//从反编译可以看出 values方法返回 Season2[]//含有定义的所有枚举对象Season2[] values Season2.values();System.out.println(遍历取出枚举对象(增强for));for (Season2 season: values) {//增强for循环System.out.println(season);}//valueOf将字符串转换成枚举对象要求字符串必须为已有的常量名否则报异常//执行流程//1. 根据你输入的 AUTUMN 到 Season2的枚举对象去查找//2. 如果找到了就返回如果没有找到就报错Season2 autumn1 Season2.valueOf(AUTUMN);System.out.println(autumn1 autumn1);System.out.println(autumn autumn1);//compareTo比较两个枚举常量比较的就是编号//1. 就是把 Season2.AUTUMN 枚举对象的编号 和 Season2.SUMMER枚举对象的编号比较//2. 看看结果/*public final int compareTo(E o) {return self.ordinal - other.ordinal;}Season2.AUTUMN的编号[2] - Season2.SUMMER的编号[3]*/System.out.println(Season2.AUTUMN.compareTo(Season2.SUMMER));}
}
2.5 enum实现接口
使用 enum 关键字后就不能再继承其它类了因为 enum 会隐式继承 Enum而 Java 是单继承机制。枚举类和普通类一样可以实现接口如下形式。 enum 类名 implements 接口 1接口 2{}
public class EnumDetail {public static void main(String[] args) {Music.CLASSICMUSIC.playing();}
}
class A {}//1.使用enum关键字后就不能再继承其它类了因为enum会隐式继承Enum而Java是单继承机制
//enum Season3 extends A {
//
//}
//2.enum实现的枚举类仍然是一个类所以还是可以实现接口的.
interface IPlaying {public void playing();
}
enum Music implements IPlaying {CLASSICMUSIC;Overridepublic void playing() {System.out.println(播放好听的音乐...);}
}