package com.kenwublog.tmp;     public class A extends B {      public int a = 100;         public A() {          super();          System.out.println(a);          a = 200;      }         public static void main(String[] args) {          System.out.println(new A().a);      }  }     class B {      public B() {          System.out.println(((A) this).a);      }  } 
不要运行这段代码  你觉得结果是什么?答对有分~,偷着运行的木有小JJ 

解决方案 »

  1.   

    0
    100
    200先执行了super();去到了B的构造函数,但是在B的构造函数里面由于B实例根本没有a变量,就算你强转过去,得到的a值 肯定为0(默认值)   再执行 System.out.println(a);   这个时候打印的是A中的成员变量a 100然后再将a = 200;   所以打印出来的应该是200
      

  2.   


    100
    200
    不解释 debug全知道了
      

  3.   

    我靠 我说不解释 有问题DEBUG就知道了 
    我吧 我的不小
      

  4.   


    构造函数在web开发中 已经很少用了 不过SWING开发 有很多是必须在构造时传参的
      

  5.   

    哈我没打算做WEB开发 做的人太多了~~