黑马程序员技术交流社区

标题: 代码 [打印本页]

作者: 刘德坤    时间: 2015-10-21 21:53
标题: 代码
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);
                }
        }
*/





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2