黑马程序员技术交流社区

标题: 最好能够详细说一下,运行完的结果为什么是30 20 10求大神帮 [打印本页]

作者: ︶喂〆快到碗里    时间: 2014-8-26 21:11
标题: 最好能够详细说一下,运行完的结果为什么是30 20 10求大神帮
本帖最后由 ︶喂〆快到碗里 于 2014-8-27 20:50 编辑

class Fu
        {
                public int num = 10;

                public Fu()
                {
                        System.out.println("fu");
                }
        }

        class Zi  extends Fu
        {
                public int num = 20;

                public Zi()
                {
                        System.out.println("zi");
                }

                public void show()
                {
                        int num = 30;
                        System.out.println(num);
                        System.out.println(this.num);
                        System.out.println(super.num);
                }
        }

        class Test
        {
                public static void main(String[] args)
                {
                        Zi z = new Zi();
                        z.show();
                }
        }



作者: Imp_x    时间: 2014-8-26 21:32
主函数开始看:第一句,new了一个Zi类对象
第二句,调用Zi类对象的show()方法
show()方法中第一句输出System.out.println(num);  由于函数本身就有局部变量num=30,所以输出30(PS:如果没有定义那个int num=30,打印出来的应该是Zi类中定义的成员变量20)
第二句输出System.out.println(this.num); this.num指向Zi类中的成员变量int num=20,所以输出20
第三句输出System.out.println(super.num);super.num指向FU类中的num,所以输出10

另外继承那里你写漏了,应该是class Zi extends Fu 这个才是类继承的格式- -不是看你名字那个父子来的,要用extends!!!
作者: 舍我其谁    时间: 2014-8-26 22:32
这代码 你确定可以输出10?
作者: 孤鸢    时间: 2014-8-26 23:19
Imp_x 发表于 2014-8-26 21:32
主函数开始看:第一句,new了一个Zi类对象
第二句,调用Zi类对象的show()方法
show()方法中第一句输出Syste ...

大神,为什么子类构造函数没有调用呢
作者: Imp_x    时间: 2014-8-26 23:25
孤鸢 发表于 2014-8-26 23:19
大神,为什么子类构造函数没有调用呢

有调用啊= =不过楼主只问结果30 20 10怎么来  就回答这个咯= =
运行结果应该如下:
Fu
Zi
30
20
10
作者: Imp_x    时间: 2014-8-26 23:26
舍我其谁 发表于 2014-8-26 22:32
这代码 你确定可以输出10?

作为版主= =不应该去解决问题么  不要反问新人喇
他的代码  Zi类后面extends一个Fu还是能打印的~ ~应该是忘了吧
作者: 孤鸢    时间: 2014-8-26 23:29
Imp_x 发表于 2014-8-26 23:25
有调用啊= =不过楼主只问结果30 20 10怎么来  就回答这个咯= =
运行结果应该如下:
Fu

啊,确实调用了,我写的时候,将构造函数加void修饰了...就没调用出来,谢谢解答
作者: ︶喂〆快到碗里    时间: 2014-8-26 23:29
Imp_x 发表于 2014-8-26 23:26
作为版主= =不应该去解决问题么  不要反问新人喇
他的代码  Zi类后面extends一个Fu还是能打印的~ ~应该是 ...

恩 呢!是的
作者: ︶喂〆快到碗里    时间: 2014-8-26 23:31
Imp_x 发表于 2014-8-26 21:32
主函数开始看:第一句,new了一个Zi类对象
第二句,调用Zi类对象的show()方法
show()方法中第一句输出Syste ...

恩 !谢谢你
作者: 舍我其谁    时间: 2014-8-26 23:50
本帖最后由 舍我其谁 于 2014-8-26 23:55 编辑
Imp_x 发表于 2014-8-26 23:26
作为版主= =不应该去解决问题么  不要反问新人喇
他的代码  Zi类后面extends一个Fu还是能打印的~ ~应该是 ...

我只想说忘记写是不可能输出10的,而且你也给他解决了不是吗
作者: TheBest__^    时间: 2014-8-27 10:29
恩呢 一楼正解




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