java基础41 枚举(类)

时间:2023-03-10 05:01:16
java基础41 枚举(类)

1、概述

枚举:一些方法在运行时,它需要数据不能是任意的,而必须是一定范围内的值,可以使用枚举解决

2、枚举的格式

enum 类名{
枚举值
}

例子

 package com.dhb.enumeration;

 /**
* @author DSHORE / 2018-6-21
*
*/
enum Sex{//枚举类
//相当于:public static final Sex man=new Sex("男");
man("男") {
@Override
public void run() {
System.out.println("男人正在跑步");
}
//相当于:public static final Sex woman=new Sex("女");
},woman("女") {
@Override
public void run() {
System.out.println("女人正在游泳");
}
};
String value;
private Sex(String value){
this.value=value;
}
//成员函数
public void getValue(){
System.out.println("Value:"+value);
}
public abstract void run();
} public class Demo2 {
public static void main(String[] args) {
Sex sex=Sex.man;//获取枚举类对象
sex.value="男";
sex.getValue(); //返回值:男
sex.run(); //返回值:男人正在跑步
}
}

3、枚举要注意的细节(上面例子的总结)

1.枚举类也是一个特殊的类.
   2.枚举值默认的修饰符是public static final
   3.枚举值就是枚举值所属的类的类型,枚举值指向的是本类的对象
   4.枚举类构造方法默认修饰符private
   5.枚举类可以定义自己的成员变量与成员函数
   6.枚举类可以定义自己的构造函数,单是构造函数修饰符必须是private
   7.枚举类可以存在抽象的方法,但是枚举值必须去实现抽象方法
   8.枚举值必须要位于枚举类的第一个语句

4、实例

需求:定义一个用户的性别不能随意更改/实例化

方式1:(不用枚举)

 package com.dhb.enumeration;

 /**
* @author DSHORE / 2018-6-21
*
*/
class Gender{ //自定义一个性别类
String value;
public static final Gender man=new Gender("男");
public static final Gender woman=new Gender("女"); private Gender(String value){
this.value=value;
}
} class Person{//人员类
private String name;
private Gender sex;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Gender getSex() {
return sex;
}
public void setSex(Gender sex) {
this.sex=sex;
}
} public class Demo1 {
public static void main(String[] args) {
Person p=new Person();
p.setName("张三");
p.setSex(Gender.woman);
System.out.println("姓名:"+p.getName()+"\t,"+p.getSex().value);//返回值:姓名:张三 ,女
}
}

方式2:(用了枚举)

 package com.dhb.enumeration;

 /**
* @author DSHORE / 2018-6-21
*
*/
enum Gender{ //枚举类
man("男"),woman("女");
String value;
private Gender(String value){
this.value=value;
}
} class Person{//人员类
private String name;
private Gender sex;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Gender getSex() {
return sex;
}
public void setSex(Gender sex) {
this.sex=sex;
}
} public class Demo1 {
public static void main(String[] args) {
Person p=new Person();
p.setName("张三");
p.setSex(Gender.woman);
System.out.println("姓名:"+p.getName()+"\t,"+p.getSex().value);//返回值:姓名:张三 ,女
}
}

附:

 package com.dhb.enumeration;

 /**
* @author DSHORE / 2018-6-21
*
*/
/*
* switch适用的数据类型:byte\short\int\char\String\枚举类型
*
* 注意:
* case后面跟的是枚举值,只需要单写枚举值即可,不需要在声明该枚举值是属于哪个枚举类的.
* */
enum Season{
spring("春季"),summer("夏季"),autumn("秋季"),winter("冬季季"); String value;
private Season(String value) {
this.value = value;
}
} enum Persons{
student("张三"),worker("劳动者"); String values;
private Persons(String values) {
this.values = values;
}
} public class Demo3 {
public static void main(String[] args) {
Season season = Season.summer;
Persons person = Persons.student;
Persons persons = Persons.worker;
switch (season) {
case spring:
System.out.println(season.value+",春暖花开..."+person.values+"是个"+persons.values);
break;
case summer:
System.out.println(season.value+",荷塘月色..."+person.values+"是个"+persons.values);
break;
case autumn:
System.out.println(season.value+",果实累累..."+person.values+"是个"+persons.values);
break;
case winter:
System.out.println(season.value+",银装素裹....."+person.values+"是个"+persons.values);
break;
}
}
}

运行结果图

java基础41 枚举(类)

原创作者:DSHORE

作者主页:http://www.cnblogs.com/dshore123/

原文出自:https://www.cnblogs.com/dshore123/p/9210345.html

欢迎转载,转载务必说明出处。(如果本文对您有帮助,可以点击一下右下角的 推荐,或评论,谢谢!