黑马程序员技术交流社区

标题: 程序运行结果的疑问 [打印本页]

作者: Nathan矫立伟    时间: 2014-6-13 23:34
标题: 程序运行结果的疑问
  1. class Super
  2. {
  3.         int i=0;
  4.         public Super(String a)
  5.         {
  6.                 System.out.println("A");
  7.                 i=1;       
  8.         }
  9.         public Super()
  10.         {
  11.                 System.out.println("B");
  12.                 i+=2;
  13.         }
  14. }

  15. class Demo extends Super
  16. {
  17.         public Demo(String a)
  18.         {
  19.                
  20.                 System.out.println("C");
  21.                 i=5;                               
  22.         }
  23.         public static void main(String[] args)
  24.         {
  25.                 int i=4;
  26.                 Super d=new Demo("A");
  27.                 System.out.println(d.i);
  28.         }
  29. }
复制代码
答案是
B
C
5
不明白的是为什么d.i会是5


作者: 不死不休眠    时间: 2014-6-13 23:53
我新人啦,回帖赚币
作者: liujie445012100    时间: 2014-6-13 23:55
你Demo对象初始化的是时候执行了构造方法,i=5,
int i=4这句话只是声明了一个变量,你System.out.println(i);这个时候绝对等于4
作者: 杨桦    时间: 2014-6-14 00:51
建立一个b对象,b.i用于获取子类中带有一个参数的构造函数的变量值。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2