package com.itheima;
/*
题目:定义一个交通灯枚举,包含红灯、绿灯、黄灯,需要有获得下一个灯的方法,例如:红灯获取下一个灯是绿灯,绿灯获取下一个灯是黄灯。
分析:
1.定义一个交通灯类Lamp,用abstract修饰
2.构造方法私有化,目的是不允许程序员自己创建该类的对象。
3.使用new Lamp();枚举出红灯、绿灯、黄灯。
4.创建获取下一个灯的方法nextLight(),用abstract修饰。
5.重载toString()方法。
6.6.在主函数中调用获取下一个交通灯的方法
步骤:
1.abstract class Lamp{}
2.private Lamp(){}
3.public final static Lamp RED=new Lamp();
4.public abstract Lamp nextLight();
5.public String toString();
6.Lamp.YELLOW.nextLight();
*/
abstract class Lamp{
private Lamp(){ //构造方法私有化,目的是不让程序员自己创建该类的对象。
}
public final static Lamp RED=new Lamp(){ //定义红灯的静态变量
public Lamp nextLight(){ //重载nextLight()方法
return GREEN;
}
};
public final static Lamp GREEN=new Lamp(){ //定义绿灯的静态变量
public Lamp nextLight(){ //重载nextLight()方法
return YELLOW;
}
};
public final static Lamp YELLOW=new Lamp(){ //定义黄灯的静态变量
public Lamp nextLight(){ //重载nextLight()方法
return RED;
}
};
public abstract Lamp nextLight(); //获取下一个交通灯的方法
public String toString(){ //重载toString()方
if(this==RED){
return "红灯";
}else if(this==GREEN){
return "绿灯";
}else{
return "黄灯";
}
}
}
public class Test13 {
public static void main(String[] args) {
//主函数中调用获取下一个交通灯的方法nextLight();
System.out.println(Lamp.YELLOW.nextLight());
}
}
/*另外一方法
public static void main(String[] args) {
Lamp lamp = Lamp.YELLOW.nextLamp();
System.out.println(lamp);
}
public enum Lamp {
//构造函数接收下一个灯的字符串
RED("GREEN"),GREEN("YELLOW"),YELLOW("RED");
//成员变量,下一个灯字符串
private String nextLamp;
//构造函数必须私有化,接收下一个灯字符串
private Lamp(String nextLamp){
//把接收进来的下一个字符串赋值给成员变量,作用于整个类中
this.nextLamp=nextLamp;
}
//返回下一个灯方法
public Lamp nextLamp(){
//通过字符串获取下一个灯,并返回
return Lamp.valueOf(nextLamp);
}
}
*/
|
|