黑马程序员Java知识回顾之枚举

 

-----------------<ahref="http://edu.csdn.net"target="blank">ASP.Net+Android+IOS开发</a>

<ahref="http://edu.csdn.net"target="blank">.Net培训</a>、期待与您交流! ----------------------

枚举类的介绍:

枚举相当于一个类,其中也可以定义构造方法,成员变量,普通方法和抽象方法。

枚举元素必须位于枚举体中的最开始部分,枚举元素列表后面要有分号与其他元素分隔,,不能把枚举中的成员方法或成员变

量放在枚举元素前面,不然报错;

定义枚举实现抽象方法(以匿名内部类形式)

枚举只有一个成员时,就可以作为一种单例的实现方式;

详见张孝祥老师的“交通灯视频”;

Public enum Trafficlamp{

RED(30){

Public Trafficlame nextLamp(){

Return GREEN;

}

}

Public abstract Trafficlamp nextLamp();

Private int time;

Private Trafficlamp(int time){

This.time=time;

}

}

 

进一步理解枚举类:

枚举是一种特殊的类,其中的每一个元素都是该类的一个实例对象。定义枚举就是定义一个类。

 

要求:定义一个星期类WeekDay;分别有7个静态子对象,不同WeekDay成员,每个成员调用的nextDay方法返回的WeekDay对象都不同;

实现:将WeekDay定义为abstract类,将nextDay方法定义为抽象方法,每个WeekDay成员通过内部类的形式,调用私有构造方法(传入自己的参数),并覆写抽象方法,来实现功能,

 

WeekDay类,枚举功能:

1私有的构造方法,

2每个元素分别用一个共有的静态成员变量表示,

3可以有若干公有方法或抽象方法,如nextDay();

public class EnumTest{

       publicstatic void main(String[]args){

              WeekDayday1=WeekDay.SUN;

              WeekDayday2=WeekDay.MON;

              WeekDayday3=WeekDay.TUE;

              System.out.println(day1);//调用toString();

              System.out.println(day2.name());//调用name()方法,  返回此枚举常量的名称,在其枚举声明中

对其进行声明。

              System.out.println(day3.ordinal());//返回枚举常量的序数(它在枚举声明中的位置,其中初始

常量序数为零)。

                   System.out.println(WeekDay.valueOf(“SUN”));//返回带指定名称的指定枚举类型的枚举常量。并打印

                   System.out.println(WeekDay.values().length);

                   //values()返回WeekDay类的对象数组(包含所有枚举元素)。打印其length属性;

 

         public enum WeekDay{//在类中定义一个枚举类,

                   SUN(1),MON(2),TUE(3),WED(4),THI(5),FRI(6),SAT(7);//枚举元素定义

                   private WeekDay(int day){       //构造方法

                            this.day=day;

                   }

/*private WeekDay(){};    //空构造方法

  public abstract WeekDaynextDay();//抽象方法;

*/

}

枚举类的应用:

1我们定义常量都是: public static fianl.... 。现在好了,有了枚举,可以把相关的常量分组到一个枚举类型里,而且枚举提供了比常量更多的方法。每个枚举实例为一个常量;

2 用于switch语句。switch语句只支持int,char,enum类型,使用枚举,能让我们的代码可读性更强。

定义枚举的技巧:

1向枚举中添加新方法(包括抽象方法):

如果打算自定义自己的方法,那么必须在enum实例序列的最后添加一个分号。而且 Java 要求必须先定义 enum 实例。

2覆盖枚举的方法,如toString(),name()等;

3实现接口, 所有的枚举都继承自java.lang.Enum类。由于Java 不支持多继承,所以枚举对象不能再继承其他类。

4使用接口组织枚举:

  1. public   interface  Food {  
  2.     enum  Coffee  implements  Food{  
  3.         BLACK_COFFEE,DECAF_COFFEE,LATTE,CAPPUCCINO  
  4.     }  
  5.     enum  Dessert  implements  Food{  
  6.         FRUIT, CAKE, GELATO  
  7.     }  
  8. }

 

 

 

 

 

 



 

 

-----------------<a href="http://edu.csdn.net"target="blank">ASP.Net+Android+IOS开发</a>

<ahref="http://edu.csdn.net"target="blank">.Net培训</a>、期待与您交流! ----------------------

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值