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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© EARL 中级黑马   /  2014-11-30 21:30  /  1187 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

class Fu
{
    int num = 5;
        public Fu()
        {
                show();
                System.out.println("第二次打印:"+num);
        }
    void show()
    {               
            System.out.println(num);          
    }
}
class Zi extends Fu
{
        int num = 3;
        public Zi(){}
    void show()
        {                     
                System.out.println("第一次打印:"+num);                               
        }
}
class TestLX {
public static void main(String[] args)
        {
                Zi f = new Zi();                                    
    }
}
为什么打印结果是
第一次打印:0
第二次打印:5
这是怎么运行的?


2 个回复

倒序浏览
  1. class Fu
  2. {
  3.     int num = 5;
  4.         public Fu()
  5.         {
  6.                 show();
  7.                 System.out.println("第二次打印:"+num);
  8.         }
  9.     void show()
  10.     {               
  11.             System.out.println(num);           
  12.     }
  13. }
  14. class Zi extends Fu
  15. {
  16.         int num = 3;
  17.         public Zi()
  18.         {
  19.                 //super(); //隐式语句空参的super(),子类对象初始化时,父类构函也会运行
  20.         }
  21.     void show()
  22.         {                     
  23.                 System.out.println("第一次打印:"+num);                                
  24.         }
  25. }
  26. class Demo
  27. {
  28. public static void main(String[] args)
  29.         {
  30.                 Zi f = new Zi();                                    
  31.             }
  32. }
复制代码

也就是说:建立Zi对象后 Zi的构造函数初始化,接着super()指向父类的Fu空参构造函数
因为空参的构造方法里面是show()方法先所以打印Zi的show,接着打印Fu的空参println语句

评分

参与人数 1技术分 +1 收起 理由
sk0806 + 1 赞一个!

查看全部评分

回复 使用道具 举报
relice 发表于 2014-11-30 22:56
也就是说:建立Zi对象后 Zi的构造函数初始化,接着super()指向父类的Fu空参构造函数
因为空参的构造方法里面 ...

为什么会打印子类的show,而不打印父类的show?
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马