java入门 -- 枚举类型详解

package com.michael.jdk15;

/*

* jdk1.5新特性之 -- 枚举

* 使用:某些方法的接收的数据必须是固定范围内的,比如星期、性别、方向、季节等,这时候解决方案就是自定义一个类

* 然后私有化构造函数,在自定义类中构造本类的对象。

*

* 解决方法二:

* 枚举类:

* 1. 枚举类也是一个特殊的类;

* 2. 枚举值默认的修饰符是public static final

* 3. 枚举值是枚举值所属的类的数据类型。

* 4. 枚举类的构造方法修饰符默认是private

* 5. 枚举类可以定义自己的成员变量和函数;

* 6. 枚举类可以定义构造函数,但是修饰符必须是private

* 7. 枚举类可以存在抽象的方法,但是枚举值必须实现抽象的方法:

* 8. 枚举值必须要位于枚举位于枚举类的第一个值:

*

* Switch使用的数据类型:byte/char/short/int/String/枚举类型

* 注意:在case语句中的枚举值不需要声明值属于那个枚举类的

*

*/

class Gender{

String value;

String name;

private Gender sex;

private Gender(String value){

this.value = value;

}

public static final Gender man = new Gender("男");

public static final Gender woman = new Gender("女");

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;

}

}

enum Sex{

man("男"){

public void run(){

System.out.println("男人在跑");

}

},woman("女"){

public void run(){

System.out.println("女人在跑");

}

};//枚举类型

//相当于:public static final Sex man = new Sex();

// public static final Sex woman = new Sex();

String value;

private Sex(String value){

this.value = value;

}

public String getValue(){

return this.value;

}

abstract public void run();

}

enum Season{

spring,summer,autumn,winter;

}

public class Demo5 {

public static void main(String[] args){

Sex sex = Sex.man;

sex.run();

sex = Sex.woman;

sex.run();

Season season = Season.spring;

switch(season){

case spring:

System.out.println("春天");

break;

case summer:

System.out.println("夏天");

break;

case autumn:

System.out.println("秋天");

break;

case winter:

System.out.println("冬天");

break;

}

}

}

你可能感兴趣的:(java入门 -- 枚举类型详解)