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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

ExtendDemo.java
class Fu{
      Fu(){
             super();
                      show();
             return;
      }
       void show(){
            System. out.println("fu show" );
      }
}
class Zi extends Fu{
       int num = 8;
       Zi(){
             super();
                          return;
      }
       void show(){
            System. out.println("zi show..." + num);
      }
}
class ExtendDemo{
       public static void main(String[] args){
            Zi z = new Zi();
            z.show();
      }
}
这个程序的运行顺序是怎么走的???求解

评分

参与人数 1技术分 +1 收起 理由
杨佳名 + 1

查看全部评分

5 个回复

倒序浏览
因为子类在创建之后可能会用到父类的成员,所以在new 子类时会默认调用super,所以初始化子类时必须先对父类成员进行初始化
回复 使用道具 举报
本帖最后由 赵越海 于 2016-7-8 17:32 编辑

         .
回复 使用道具 举报
因为子类要看看父类对成员属性做了些什么事
回复 使用道具 举报
如图所示

1.png (87.19 KB, 下载次数: 5)

1.png

评分

参与人数 1技术分 +1 收起 理由
杨佳名 + 1

查看全部评分

回复 使用道具 举报
子类继承父类,势必要从父类获取属性和方法。
而你创建子类对象时,需要调用子类的构造函数,而在子类的构造函数调用后,第一步就是默认访问父类的无参数的构造函数,如果没有空参数的构造函数,就必须手动使用super(参数)访问指定的带参数的构造函数。

做这个的目的是了解父类对属性做过哪些操作。避免遗漏信息。

评分

参与人数 1技术分 +1 收起 理由
杨佳名 + 1

查看全部评分

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