黑马程序员---高新技术之枚举

时间:2022-08-02 19:43:10
---------------------- <a href="http://www.itheima.com"target="blank">Jsp.java+Android开发</a>、<a href="http://www.itheima.com"target="blank">Jsp.java+Android开发 </a>、期待与您交流! ----------------------


枚举:

关键字 enum
枚举就是要让某个类型的变量的取值只能为若干固定值之中的一个。
是一个特殊的类,其中的每一个元素都是该类的一个对象。

注意 : 因为不能New 枚举的实力,所以枚举不能继承其他类,也不能被其他类继承。

 为什么要有枚举?
      问题:要定义星期几或性别的变量,该怎么定义?假设用1-7分别表示星期一到星期日,但有人可能会写成int weekday = 0;或即使使用常量方式也无法阻止意外。
枚举就是要让某个类型的变量的取值只能为若干个固定值中的一个,否则,编译器就会报错。枚举可以让编译器在编译时就可以控制源程序中填写的非法值,普通变量的方式在开发阶段无法实现这一目标。
 
    用普通类如何实现枚举功能,定义一个Weekday的类来模拟枚举功能。 
    1、私有的构造方法。
    2、每个元素分别用一个公有的静态成员变量表示。

     可以有若干公有方法或抽象方法。采用抽象方法定义nextDay就将大量的if.else语句转移成了一个个独立的类


 enum TrafficLamp{
/**
* 对于这道题目而言,使用的其实是匿名对象内部类!
* 枚举最简单的创建对象方法(模拟红绿灯):RED,YELLOW,GREEN
* 对于普通的类而言,创建对象:Person p = new Person();

*/

RED(30){


@Override
public TrafficLamp nextLamp() {
return YELLOW;
}

},

YELLOW(40){


@Override
public TrafficLamp nextLamp() {
return GREEN;
}

},

GREEN(45){


@Override
public TrafficLamp nextLamp() {
return RED;
}

};
public abstract TrafficLamp nextLamp();
private int time;
private TrafficLamp(int time){
this.time = time;
}
public int getTime() {
return time;
}
public void setTime(int time) {
this.time = time;
}

}

public class EnumDemo{
public static void main(String[] args) {
System.out.println(TrafficLamp.RED.nextLamp());
System.out.println(TrafficLamp.RED.nextLamp().getTime());

}
}
---------------------- <a href="http://www.itheima.com"target="blank">Jsp.java+Android开发</a>、<a href="http://www.itheima.com"target="blank">Jsp.java+Android开发培训</a>、期待与您交流! ----------------------