定义枚举类
public enum EnumType{
SHOW("小红",13),
DOME("小明",19); //枚举对象
private String name;
private int age;
EnumType(){}
EnumType(String name,int age){
this.name = name;
this.age = age;
}
public String getName(){
return this.name;
}
public int getAge(){
return this.age;
}
}
class Test{
public static void main(String[] args) {
System.out.println(EnumType.SHOW.getName());
System.out.println(EnumType.DOME.getAge());
}
}
定义好一个枚举不能直接写属性方法,最开始必须要写上枚举对象,枚举对象可以有多个,用“,”隔开然后用“;”结尾,每个枚举对象都有自己的序号,从0开始。写完枚举对象后才可以写属性和方法。
- 定义枚举的关键字:enum
- 定义枚举和定义类差不多,就是把class换成enum
- 枚举调用方式:枚举名.枚举属性(建议大写)
Enum类
使用Enum类的好处:
- 如果是固定的数据使用静态常量和枚举的效果差不多,但是不是固定的数据那么就推荐使用枚举,毕竟 static final不好扩展。
- 可以将枚举用作在switch上
- enum继承了java.lang.Enum类,根据java的单继承原则,枚举类不能继承其他类,但是可以实现接口。
先来一个简单枚举
public enum EnumType{
DOG,TOD,SHOW,TYPE; //枚举对象
}
class Test{
public static void main(String[] args) {
System.out.println(EnumType.TYPE); //Type
}
}
接下来给大家演示枚举属性扩展
public enum EnumType{
SHOW("小红",13),
DOME("小明",19);
private String name;
private int age;
EnumType(){}
EnumType(String name,int age){
this.name = name;
this.age = age;
}
public String getName(){
return this.name;
}
public int getAge(){
return this.age;
}
}
class Test{
public static void main(String[] args) {
System.out.println(EnumType.SHOW.getName()); //小红
}
}
枚举对象是跟着构造方法来定义的,枚举类中的构造方法不能是public。
在来演示一下方法扩展
只要加一个抽象方法就行了
public enum EnumType{
SHOW("小红",13){
@Override
public String getEnumType() {
// TODO Auto-generated method stub
return "萝莉是世界上最可爱的";
}
},
DOME("小明",19) {
@Override
public String getEnumType() {
// TODO Auto-generated method stub
return "信萝莉得永生";
}
};
private String name;
private int age;
public abstract String getEnumType();
EnumType(){}
EnumType(String name,int age){
this.name = name;
this.age = age;
}
public String getName(){
return this.name;
}
public int getAge(){
return this.age;
}
}
class Test{
public static void main(String[] args) {
System.out.println(EnumType.SHOW.getEnumType()); //小红
}
}
结果就自己去试了
简单来说,枚举类用来处理一些固定数据比较好
定义枚举结构
枚举实现接口:
interface Motion{
public void show();
}
public enum EnumType implements Motion {
SHOW("小红",13){
@Override
public void show() {
System.out.println("萝莉赛高");
}
},
DOME("小明",19) {
@Override
public void show() {
System.out.println("萝莉才是王道");
}
};
private String name;
private int age;
EnumType(String name,int age){
this.name = name;
this.age = age;
}
public String getName(){
return this.name;
}
public int getAge(){
return this.age;
}
}
class Test{
public static void main(String[] args) {
Motion motion = EnumType.SHOW;
motion.show();
}
}
还有一种接口实现
interface Motion{
public void show();
}
public enum EnumType implements Motion {
SHOW("小红",13),
DOME("小明",19);
private String name;
private int age;
@Override
public void show() {
System.out.println("姓名:"+this.name);
}
EnumType(String name,int age){
this.name = name;
this.age = age;
}
public String getName(){
return this.name;
}
public int getAge(){
return this.age;
}
}
class Test{
public static void main(String[] args) {
EnumType.SHOW.show();
}
}
属性和方法扩展写到上面了。