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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 杨志 高级黑马   /  2012-4-28 21:48  /  1587 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文


  1. public enum TranfficLamp {

  2. RED(300) {

  3. public TranfficLamp nextLamp() {


  4. return GREEN;

  5. }

  6. },

  7. GREEN {


  8. @Override

  9. public TranfficLamp nextLamp() {


  10. return YELLOW;

  11. }

  12. },

  13. YELLOW {


  14. @Override

  15. public TranfficLamp nextLamp() {


  16. return RED;

  17. }

  18. };

  19. public abstract TranfficLamp nextLamp();

  20. private int time;

  21. private TranfficLamp(){

  22. }


  23. private TranfficLamp(int time){

  24. this.time = time;

  25. }


  26. }

  27. 视频中说这里就是在匿名子类初始化的时候会去调用父类的构造方法。这300就会在调用父类的构造方法的时候传入进去。
  28. 我想知道在初始化子类的时候,调用父类的构造方法,并传入值有什么意义。这谁能说说这个具体是怎么走的流程。
复制代码

3 个回复

倒序浏览
意义就是子类继承了父类,那么就默认的含有父类的公共成员方法和公共成员变量,这些方法和变量在子类里不再重复声明。如果初始化子类的时候,不初始化父类,那么通过子类调用父类方法或变量的时候会出异常。所以,Java虚拟机会在你初始化子类的时候默认的初始化子类的父类。而且是一层一层的往上递进!
回复 使用道具 举报
楼主的意思是传入300有什么意义吧,你应该不是问的为什么要传入值(因为父类的构造方法需要传递参数的),你懂的。
RED(300) {

public TranfficLamp nextLamp() {


return GREEN;


}

},//"{}"中的代码就表示的是TranfficLamp的一个子类,这里使用匿名内部类来实现的,大括号外边的RED是TranfficLamp类的子类对象的引用。
这里传入值只是模拟交通信号灯,并不是真正的听300秒再运行,只是模拟  个人见解,呵呵,应该是这个意思


回复 使用道具 举报
调用父类构造方法只有一个意义就是初始化父类。
为什么要初始化父类,就在于子类继承的父类的代码会有一些需要初始化才有意义的需求。
这些都是逻辑上的需求,反正调用父类的构造函数的意义是初始化父类的代码。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马