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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© Moonboy2014 中级黑马   /  2014-6-12 22:50  /  2045 人查看  /  13 人回复  /   1 人收藏 转载请遵从CC协议 禁止商业使用本文

class Person
{
        int num = 4;
}
class Student extends Person
{
        void show()
        {
                System.out.println(num);
        }
}
---------new Student().show();-----
请教一下,这段代买的运行结果是啥,括号中的num前面是省略了啥,知道的麻烦详解一下,不胜感激

13 个回复

倒序浏览
结果是4,括号中num省略了super,因为num是从父类Person中继承过来的,子类Student如果想调用父类中的变量的话,需要加super。如果你还感觉不清楚的话,可以自己测试一下,把int num = 4,换成private私有的即private int num = 4;再把System.out.println(num),换成System.out.println(this.num);运行一下,如果是这样的程序会报错,根据提示你就知道原因了
回复 使用道具 举报
像这样的你只需要自己多测试测试就知道咋回事了
回复 使用道具 举报
焦国军 发表于 2014-6-13 00:12
像这样的你只需要自己多测试测试就知道咋回事了

感谢:loveliness:
回复 使用道具 举报
支持一下子。
回复 使用道具 举报
表示支持!
回复 使用道具 举报
Piston 中级黑马 2014-6-13 11:58:03
7#
其实运行一下。多打印下。或者 debugger 就能知道怎么运行了的。。多多debugger ..
回复 使用道具 举报
an1911 中级黑马 2014-6-13 12:47:06
8#
学习下。。
回复 使用道具 举报
true 中级黑马 2014-6-13 12:50:25
9#
多尝试一下,各种情况都试一次
回复 使用道具 举报
好吧,我还没学到这里,之前的忘记了。
回复 使用道具 举报
焦国军 发表于 2014-6-13 00:10
结果是4,括号中num省略了super,因为num是从父类Person中继承过来的,子类Student如果想调用父类中的变量 ...

牛逼 哈哈
回复 使用道具 举报
多试几次就明白了。
回复 使用道具 举报
其实很简单,如果子类中有和父类同名的成员变量,那么我们在调用的时候,没有用super的话,就是默认this,默认调用子类的,如果用了super就是调用父类的变量,但是如果子类中没有这个变量,只有父类中有,那么无需加super,默认便是super,因为子类里面没有嘛,所以输出4
回复 使用道具 举报

感谢!:)
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马