CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Java >  J2SE / 基础类

请教高手解答一个难题!关于类中方法执行顺序

楼主jide_123()2005-08-02 11:32:42 在 Java / J2SE / 基础类 提问

class   person{      
      protected   String   name   =   "unknow";      
      protected   int   age   =   0;      
      public   person(String   name,int   age){          
          this.name   =   name;          
          this.age   =   age;          
          display();          
      }      
      public   void   display(){          
          System.out.println("person+"+name+"+"+age);          
      }      
  }  
   
  class   student   extends   person{      
      private   int   sno   =   00;      
      public   student(String   name,int   age,int   sno){          
          super(name,age);          
          this.sno   =   sno;          
          display();          
      }      
      public   void   display(){          
          System.out.println("student+"+name+"+"+age+"+"+sno);          
      }          
  }  
   
  public   class   test{      
      public   static   void   main(String[]   args){          
          student   jjj   =   new   student("张三",19,200);            
      }      
  }  
   
  为什么输出是:student+张三+19+0  
                              student+张三+19+200 问题点数:10、回复次数:5Top

1 楼congliu(取次花丛都不顾,半缘修道半缘君。)回复于 2005-08-02 11:40:01 得分 0

当然是。  
  因为调用子类的构造函数时肯定先调用父类的构造函数。  
  在person的构造函数中有dispaly(),所以先输出了student+张三+19+0,然后调用子类的构造函数中的display(),所以输出student+张三+19+200  
  Top

2 楼homesos(熊猫贩子)回复于 2005-08-02 11:48:40 得分 0

因为,在构造子类时需要首先调用父类的构造方法。  
     应该是先调用父类的display()方法,再调用子类student   的方法。  
  又因为,子类student   覆盖了父类的display()方法,因此,在调用父类构造方法时使用了子类student   的该方法。  
     在父类调用其子类student   的方法时,private   int   sno   =   00;  
  故输出:student+张三+19+0  
   
  尔后,子类student   又调用了自己的display()方法,正常输出结果:  
                  student+张三+19+200  
  Top

3 楼interhanchi(on the Java Road)回复于 2005-08-02 12:13:33 得分 0

继承中的加载顺序是先父类,后子类!Top

4 楼believefym(feng)回复于 2005-08-02 13:34:24 得分 0

注意,当父类构造函数只有带参数的构造函数时,子类构造函数里面必须显式调用父类构造函数,  
  如super(para1,para2...)Top

5 楼chasnoly(chasnoly)回复于 2005-08-02 13:44:30 得分 0

楼主说得很明白啦。我再补充一下执行顺序。在创建子类对象,系统寻找子类构造方法时,会默认一个super()方法,用它去调用父类的构造方法。父类的构造方法带参数时则要明确调用super()方法。Top

相关问题

  • 请教一个难题:关于执行顺序。
  • 执行顺序
  • JApplet执行顺序问题
  • 语句的执行顺序
  • 程序执行顺序
  • as执行顺序问题
  • js执行顺序问题
  • 函数的执行顺序
  • PHP执行顺序讨论!
  • 谁帮我解答一下Dispose、SuppressFinalize、析构函数的概念,联系,区别,执行顺序等等,反正我是挺乱,希望大家帮我理理

关键词

  • 函数
  • 子类
  • 构造
  • 调用
  • 父类
  • student
  • 方法
  • sno
  • 输出
  • 顺序

得分解答快速导航

  • 帖主:jide_123

相关链接

  • CSDN Java频道
  • Java类图书
  • Java类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo