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

© 王广彬 中级黑马   /  2012-8-12 21:23  /  1444 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

为什么子类一定要访问父类中的构造函数?如果父类中没有构造函数呢?

3 个回复

倒序浏览
哦,这个问题以前问过老师,刚好知道!
在子类中必须有一个super指向父类中的构造方法,因为要对父类进行初始化。有父类才有子类,在构造中如果用this调用本类中的其他带参数构造,最终也会走到父类中的构造函数。父类中有空参数构造函数,系统则会默认调用父类中的空参数构造函数
super语句一定要定义在子类构造函数的第一行,因为子类要做的时候要看看父类中是否已经做了,所以先调用父类中的构造函数进行初始化,如果父类中已经初始化了,则子类中不需要再进行初始化,直接用可以。如果没有,则子类再进行初始化。
如果要访问父类中指定的构造函数,可以通过手动定义super语句的方式来指定。

评分

参与人数 1技术分 +1 收起 理由
包晗 + 1

查看全部评分

回复 使用道具 举报
首先得了解什么是继承,继承是把很多类的相同特征和行为进行抽取,用一个类来描述。让多个类和这个类产生一个关系。
                                ***子类创建对象时,会先去创建父类的对象。
                                      默认是去调用父类的无参构造方法。
                                ***子类构造方法中,第一行默认是super()
                                ***为什么子类中第一行会默认有super()
                                        因为他继承父类的成员使用,使用前这些成员必须初始化,
                                        而他们是父类的成员,所以,必须通过父类进行初始化。
                                        所以,会先创建一个父类的对象。
                        **当父类没有无参构造方法时
                                必须使用this或者super调用其他的构造方法。

评分

参与人数 1技术分 +1 收起 理由
包晗 + 1

查看全部评分

回复 使用道具 举报
继承:多个类中有相同的成员变量和成员方法,这样的代码重复度很高,所以,我们对其进行改进。
      用一个类定义这些相同的成员变量和成员方法,然后,让多个类和这一个类产生某种关系,
      有了这个关系后,多个类中就不用再写这些相同的代码了。那么,这个关系,在java中叫继承。
继承的特点:了解继承的特点有助于理解
                A:java中只能单继承,没有多继承。
                B:java可以有多重(层)继承。

构造方法:子类的实例化过程,如果是子类继承看父类,会先去创建父类的对象。
           默认是去调用父类的无参构造方法。子类构造方法中,第一行默认是super()
                子类第一行使用为什么是调用默认super(),因为他继承父类的成员使用,
           使用前这些成员必须初始化而他们是父类的成员,所以,必须通过父类进行初始化。
        所以,会先创建一个父类的对象。当父类没有无参构造方法时必须使用this或者super
                调用其他的构造方法。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马