黑马程序员_java基础加强之枚举

来源:互联网 发布:淘宝模特招聘 编辑:程序博客网 时间:2024/05/17 08:18

------- android培训java培训、期待与您交流! ----------

需求:用普通类来实现枚举

public abstract class LampClass {
 
 private LampClass(){};
 private LampClass(int time){
  this.time = time;
  System.out.println(this.time);
  
 }
 public final static LampClass RED = new LampClass(5){
  public LampClass nextLamp() {
   return YELLOW;
  }
 };
 
 public final static LampClass GREEN = new LampClass(){
  public LampClass nextLamp() {
   return RED;
  }
 };
 
 public final static LampClass YELLOW = new LampClass(){
  public LampClass nextLamp() {
   // TODO Auto-generated method stub
   return GREEN;
  }
 };
 private int time;
 public abstract LampClass nextLamp();
}

 

需求:定义枚举类:

//用enum定义一个枚举类
public enum LampEnum{
   //指定构造参数调用相应的构造器,并实现其中的抽象方法,每个枚举值就是一个final static LampEnum 对象;
   RED(30){
      public LampEnum nextLamp(){
         return YELLOW;
      };
   },GREEN(30){
      public LampEnum nextLamp(){
      return RED;
      };
     },YELLOW(5){
          public LampEnum nextLamp(){
          return GREEN;
          };
       };
  //构造器定义必须放在枚举值的后面,并且构造器只能用private修饰
  private LampEnum(){
      System.out.println("the first constroctor");
  };
 private LampEnum(int time){
  this.time = time;
 }
 
 private int time;
 
 public abstract LampEnum nextLamp();
 
}

          
前言:视频目录
 1.枚举的作用介绍
 2.用普通类模拟枚举类的实现原理
 3.Java5的枚举的基本应用
 4.实现带有构造方法的枚举
 5.实现带有抽象方法的枚举


一:概念
 1.1枚举的作用介绍
 枚举就是要让某个类型的变量取值只能为若干个固定值中的一个。否则,编译会报错。
 1.2用普通类模拟枚举类的实现原理
   首先,将构造函数私有化,让其他对象无法创建该类对象。
   其次,每一个元素分别用一个公有静态成员变量表示。
   最后,可以有多个公有方法或抽象方法。
 1.3Java5枚举的基本应用
  枚举是一个特殊的类,其中的每一个元素都是该类的一个实例对象。
 1.4实现带有构造函数的枚举
  构造函数必须私有化;如果有多个构造函数,则根据参数列表辨别调用哪个构造函数;枚举元素MON和MON()的效果一样,都是调用弄人的构造函数。
 定义枚举注意:枚举元素必须位于枚举体中最开始的部分,枚举元素列表的后面要有分号与其他成员分隔。
  枚举代码精华实现:
 package com.test.exam;

public enum TrafficLamp {
 Red(30){

  @Override
  public TrafficLamp nextLamp() {
   // TODO Auto-generated method stub
   return Yellow;
  }},Green(45){

   @Override
   public TrafficLamp nextLamp() {
    // TODO Auto-generated method stub
    return Green;
   }},Yellow(5){

    @Override
    public TrafficLamp nextLamp() {
     // TODO Auto-generated method stub
     return Red;
    }};
 //定义灯亮时间
 private int time;
 //带参数的构造函数
 private TrafficLamp(int time){
  this.time=time;
 }
 //抽象函数
 public abstract TrafficLamp nextLamp();
}

  

 

 

0 0
原创粉丝点击