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

本帖最后由 李东梁 于 2014-3-25 10:47 编辑

        复习的时候看到了这个题目,还是不能清楚的把不同累的执行顺序分清楚,

想知道程序中每条程序加载,和执行的先后顺序,求大虾指点。。。

  1. class Base{
  2.         private int i = 2;
  3.         
  4.          Base(){
  5.                 System.out.println("base:"+this.i);  
  6.                 this.display();
  7.         }

  8.         public void display(){
  9.                 System.out.println("base display:"+this.i);
  10.         }
  11. }
  12. class Derived extends Base {
  13.          public int i = 22;

  14.          public        Derived(){
  15.                 super();
  16.                 i = 222;        
  17.          }
  18.          public void display(){
  19.                 System.out.println("derived display:"+i);
  20.          }
  21. }

  22. class TestI {
  23.         public static void main(String[] args){
  24.                 new Derived();
  25.         }
  26. }
复制代码


评分

参与人数 2技术分 +1 黑马币 +2 收起 理由
美丽的爱 + 2 赞一个!
何伟超 + 1

查看全部评分

1 个回复

倒序浏览


首先先执行  主函数的代码:
  • public static void main(String[] args){
  •                 new Derived();
  •         }



进入主函数以后,,,new对象,,开辟空间,,
执行class Derived,进入类Derived的构造函数,,但他有继承父类,,
  •          public   Derived(){
  •                 super();
  •                 i = 222;
  •          }
  • 所以还得找父类的构造函数:
  •         Base(){
  •                 System.out.println("base:"+this.i);
  •                 this.display();
  •         }
   执行  System.out.println("base:"+this.i);  


结果是 i=2


然后再执行 this.display();

又调用子类的方法
  •     public void display(){
  •                 System.out.println("derived display:"+i);
  •          }



System.out.println("derived display:"+i);
结果是0;




评分

参与人数 1技术分 +1 收起 理由
枫儿 + 1 赞一个!

查看全部评分

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