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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 ︶喂〆快到碗里 于 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();
                }
        }


10 个回复

倒序浏览
主函数开始看:第一句,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!!!
回复 使用道具 举报 2 0
这代码 你确定可以输出10?
回复 使用道具 举报
Imp_x 发表于 2014-8-26 21:32
主函数开始看:第一句,new了一个Zi类对象
第二句,调用Zi类对象的show()方法
show()方法中第一句输出Syste ...

大神,为什么子类构造函数没有调用呢
回复 使用道具 举报
孤鸢 发表于 2014-8-26 23:19
大神,为什么子类构造函数没有调用呢

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

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

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

恩 呢!是的
回复 使用道具 举报
Imp_x 发表于 2014-8-26 21:32
主函数开始看:第一句,new了一个Zi类对象
第二句,调用Zi类对象的show()方法
show()方法中第一句输出Syste ...

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

我只想说忘记写是不可能输出10的,而且你也给他解决了不是吗
回复 使用道具 举报
恩呢 一楼正解
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马