A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 李国华 中级黑马   /  2014-1-16 20:06  /  1129 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

在学习张老师的视频时看到如下代码

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


评分

参与人数 1技术分 +2 收起 理由
船长 + 2

查看全部评分

3 个回复

倒序浏览
代码是
  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.         }
复制代码

评分

参与人数 1技术分 +2 收起 理由
船长 + 2

查看全部评分

回复 使用道具 举报
(1)是实现了父类的抽象方法nextLamp(),因为父类是抽象的。
(2)我是这样理解的:
这个方法public abstract TrafficLamp nextLamp();本来就是父类的,只是没有实现而已,然后分别通过子类对象RED,GREEN,YELLOW来实现父类的这个方法。

评分

参与人数 1技术分 +2 收起 理由
船长 + 2

查看全部评分

回复 使用道具 举报
只有子类才清楚下一盏灯是什么颜色,所以讲方法抽象出来,交个子类去实现呀

评分

参与人数 1技术分 +2 收起 理由
船长 + 2

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马