🏠个人主页: 黑洞晓威
🧑个人简介:大家好,我是晓威,一名普普通通的大二在校生,希望在CSDN中与大家一起成长。🎁如果你也在正在学习Java,欢迎各位大佬来到我的博客查漏补缺呀,如果有哪里写的不对的地方也欢迎诸佬指正啊。
@[TOC]
枚举类
对枚举类的理解:
类的对象只有有限个,确定的,我们称此类为枚举类。当需要定义一组常量是,强烈建议使用枚举类
如何定义枚举类
1,自定义枚举类
public class text01 {
public static void main(String[] args) {
Student wang = Student.WANG;
System.out.println(wang);
}
}
class Student{
//1.声明Student对象的属性,用privat final修饰
private final String name;
private final int age;
//2.私有化构造器,并给属性赋值
private Student(String str,int n){
this.name=str;
this.age=n;
}
//3,提供当前枚举类的多个对象
public final static Student WANG=new Student("王晓威",19);
public final static Student HUANG=new Student("黄明起",18);
public final static Student JIN=new Student("金旭东",17);
public final static Student LI=new Student("李天乐",18);
//4.实现一些其他功能
public String getName() {
return name;
}
public int getAge() {
return age;
}
@Override
public String toString() {
return "Student{" +
"name='" + name + '\'' +
", age=" + age +
'}';
}
}
2,enum枚举类
enum Student{
//1.提供当前枚举的多个对象且必须在前面
WANG ("王晓威",19),
HUANG ("黄明起",18),
JIN ("金旭东",17),
LI ("李天乐",18);
//2,声明Student对象的属性,用privat final修饰
private final String name;
private final int age;
//3.私有化构造器,并给属性赋值
private Student(String str,int n){
this.name=str;
this.age=n;
}
public String getName() {
return name;
}
public int getAge() {
return age;
}
//不重写toString方法,则打印对象名
/*@Override
public String toString() {
return "Student{" +
"name='" + name + '\'' +
", age=" + age +
'}';
}*/
}
枚举的常用方法
- values()方法:返回枚举类型的对象数组,可以方便遍历所有枚举值
- valueOf(String str):可以把一个字符串转化为对应的枚举类对象。要求字符串必须是枚举类的对象名
- toString():返回当前枚举类对象常量的名称
public static void main(String[] args) {
//1.toString
Student wang = Student.WANG;
System.out.println(wang.toString());
//2.values
Student[] arr = Student.values();
for (int i = 0; i < arr.length; i++) {
System.out.println(arr[i]);
}
//valueOf
Student huang = Student.valueOf("HUANG");
System.out.println(huang);
}
}
使用enum关键字定义的枚举类实现接口的情况
情况一:实现接口,在enum类中实现抽象方法
情况二:让枚举类的对象分别实现接口中的抽象方法
interface of{
void say();
}
enum Student implements of{
//让枚举类的对象分别实现接口中的抽象方法
WANG ("王晓威",19){
@Override
public void say() {
System.out.println("我叫王晓威");
}
},
HUANG ("黄明起",18){
@Override
public void say() {
System.out.println("我叫王晓威");
}
},
JIN ("金旭东",17){
@Override
public void say() {
System.out.println("我叫金旭东");
}
},
LI ("李天乐",18){
@Override
public void say() {
System.out.println("我叫李天乐");
}
};
private final String name;
private final int age;
private Student(String str,int n){
this.name=str;
this.age=n;
}
public String getName() {
return name;
}
public int getAge() {
return age;
}
//情况一:实现接口,在enum类中实现抽象方法
@Override
public void say() {
System.out.println("我叫"+this.getName());
}
/*@Override
public String toString() {
return "Student{" +
"name='" + name + '\'' +
", age=" + age +
'}';
}*/
}
🎉文章到这里就结束了,感谢诸佬的阅读。🎉💕欢迎诸佬对文章加以指正,也望诸
佬不吝点赞、评论、收藏加关注呀😘