黑马程序员技术交流社区

标题: 关于枚举类定义方法的问题请教大神们 [打印本页]

作者: 李国华    时间: 2014-1-16 20:06
标题: 关于枚举类定义方法的问题请教大神们
在学习张老师的视频时看到如下代码

  1. <P> </P>
复制代码
其中在定义方法nextLamp()时,在元素之后定义了抽象方法 public abstract TrafficLamp nextLamp();此处是否是这样理解的,RED,GREEN,YELLOW作为TrafficLamp类的子类的对象,子类以内部类的形式继承父类TrafficLamp,重写了抽象方法nextLamp()。还有一个问题就是为什么一定要定义抽象方法public abstract TrafficLamp nextLamp();,而不是直接在内部类中定义方法



作者: 李国华    时间: 2014-1-16 20:09
代码是
  1. public enum TrafficLamp{
  2.                 RED(30){
  3.                         public TrafficLamp nextLamp(){
  4.                                 return GREEN;
  5.                         }
  6.                 },
  7.                 GREEN(45){
  8.                         public TrafficLamp nextLamp(){
  9.                                 return YELLOW;
  10.                         }
  11.                 },
  12.                 YELLOW(5){
  13.                         public TrafficLamp nextLamp(){
  14.                                 return RED;
  15.                         }
  16.                 };
  17.                 public abstract TrafficLamp nextLamp();
  18.         }
复制代码

作者: 够了没有    时间: 2014-1-16 21:11
(1)是实现了父类的抽象方法nextLamp(),因为父类是抽象的。
(2)我是这样理解的:
这个方法public abstract TrafficLamp nextLamp();本来就是父类的,只是没有实现而已,然后分别通过子类对象RED,GREEN,YELLOW来实现父类的这个方法。

作者: 孤独的天奇    时间: 2014-1-16 22:02
只有子类才清楚下一盏灯是什么颜色,所以讲方法抽象出来,交个子类去实现呀




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