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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© q798500920 中级黑马   /  2015-4-13 14:55  /  950 人查看  /  14 人回复  /   1 人收藏 转载请遵从CC协议 禁止商业使用本文

  1. class Super
  2. {
  3.         int i=0;
  4.         public Super()
  5.         {
  6.                
  7.         }
  8.         public Super(String s)
  9.         {
  10.                 i=1;
  11.         }
  12. }
  13. class Demo extends Super
  14. {
  15.         public Demo(String s)
  16.         {
  17.                 i=2;
  18.         }
  19.         public static void main(String[] args)
  20.         {
  21.                 Demo d=new Demo("yes");
  22.                 System.out.println(d.i);
  23.         }
  24. }
复制代码
求解答,最后的运行结果是什么,并具体分析下!

14 个回复

倒序浏览
请问楼主是用什么软件写程序的?
回复 使用道具 举报
cody 发表于 2015-4-13 17:36
请问楼主是用什么软件写程序的?

记事本啊,还能有啥
回复 使用道具 举报
主函数执行,Demo d=new Demo("yes");调用Demo类中的构造方法Demo(String s)。一看需要i,在Demo类中没有找到i。一个super指向,找到Demo父类中的i,将i这个成员变量赋值为2。构造方法执行完毕。打印d.i。在Demo类中没找到i,一个super指向,找到父类中的i。此成员变量i之前已被赋值为2,打印2。结果为2
回复 使用道具 举报
好像出现了死语句,哥们跟自己玩起来了
回复 使用道具 举报
把主函数写到子类里面了

正常的运行过程是
21,22----->15,16----->04,05,06,07----->17,18

最后的结果是2
回复 使用道具 举报
打印结果是:1
回复 使用道具 举报
showdy 中级黑马 2015-4-13 21:23:24
8#
本帖最后由 showdy 于 2015-4-13 21:24 编辑

子父类的初始化是分层进行的,先父类初始化,后子类初始化。
21----15---16---04---03---05--06--07-----17---22
结果为2
回复 使用道具 举报
lzh2015 发表于 2015-4-13 19:52
好像出现了死语句,哥们跟自己玩起来了

死语句!?求解,我是没看出来的
回复 使用道具 举报
打印结果:2
程序首先加载的是main方法的主函数,再往下走,遇到子类Demo new了一个对象d同时实现带参的构造方法,马上d就上去找Demo里面带参的构造方法,因为Demo是继承了Super类,所以在Demo类的带参构造方法中第一行有一条隐式的super语句指向了父类Super中的带参构造方法(父类Super中的无参会优先执行,但此题中不影响),此时成员变量的值为1,然后程序再往下走完成Demo类中的带参构造方法,i被赋值为2.所以在输出语句中 d.i会输出2.

个人见解,见谅
回复 使用道具 举报
dsqqg 中级黑马 2015-4-13 22:14:34
11#
:handshake 看有回复什么的都有!!!
回复 使用道具 举报
最终运行结果是2.分析:你在main里创建了一个子类对象,并调用了子类的构造函数。但是不论子类构造函数如何变化,默认第一行都有一条隐式语句super();除非你手动调用父类的其他构造函数,否则这个语句会自动调用父类中的空参数构造函数,执行完父类的空参数构造函数后,顺序执行子类构造函数中的代码,i被赋值为2.当你在主函数中打印时,自然打印2出来。
回复 使用道具 举报
是2,先执行父类的空参构造方法,再执行子类的
回复 使用道具 举报
我个人觉得结果是2,但是没有执行父无参构造,因为你调用的是有参数的构造方法怎么会调用无参构造呢?
回复 使用道具 举报
都没有结果,不能这样写啊
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马