黑马程序员技术交流社区

标题: 为什么子类实例化的时候要访问父类中的构造函数呢? [打印本页]

作者: 焦明坤    时间: 2014-12-19 21:54
标题: 为什么子类实例化的时候要访问父类中的构造函数呢?
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();
      }
}
这个程序的运行顺序是怎么走的???求解
作者: lwj123    时间: 2014-12-19 22:13
因为子类在创建之后可能会用到父类的成员,所以在new 子类时会默认调用super,所以初始化子类时必须先对父类成员进行初始化
作者: 赵越海    时间: 2014-12-19 22:17
本帖最后由 赵越海 于 2016-7-8 17:32 编辑

         .
作者: kenhe    时间: 2014-12-19 22:20
因为子类要看看父类对成员属性做了些什么事
作者: Honelyboy    时间: 2014-12-19 22:31
如图所示

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

1.png

作者: 提米特    时间: 2014-12-19 22:54
子类继承父类,势必要从父类获取属性和方法。
而你创建子类对象时,需要调用子类的构造函数,而在子类的构造函数调用后,第一步就是默认访问父类的无参数的构造函数,如果没有空参数的构造函数,就必须手动使用super(参数)访问指定的带参数的构造函数。

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




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