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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 914360849 中级黑马   /  2015-6-1 21:17  /  741 人查看  /  13 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

一个A类继承另一个类B,类A构造函数初始化时,为什么会默认访问父类的构造函数?

13 个回复

倒序浏览
public class B{
      public B(){
        super();
      }
}
class A extends B{
      public A(){
        super();//这是父类。
       }
}
因为A是继承B的,所以在初始化的时候要先访问B,这就好比,A是儿子,B是父亲,儿子继承了父亲的一些元素(比如,相貌,智慧等等),人家再说儿子的时候,肯定会说他是B的儿子。
说的不是太清楚,参考的看看吧。我也刚学不久。

评分

参与人数 1技术分 +1 收起 理由
万合天宜 + 1

查看全部评分

回复 使用道具 举报
本帖最后由 edithe 于 2015-6-1 22:33 编辑

因为子类的构造函数代码块中,第一行会有默认的super();这就是调用父类无参构造函数,
构造函数第一行一般会是this或者super
你用eclipse自动生成子类的构造函数试下,(这总会吧)
一般我们不会写出来,但是它存在
回复 使用道具 举报
这是因为子类继承父类,子类要继承父类的非私有属性,需要调用父类的构造方法给父类的成员变量进行初始化
这其实在子类对象中有一块空间是存放父类的成员变量和非私有成员变量的
回复 使用道具 举报
为了给父类初始化,,,,
回复 使用道具 举报
子类的初始化需要调用父类的初始化方法吧
回复 使用道具 举报
应为子类会构造函数每一行都有个默认的super()
回复 使用道具 举报
因为子类继承父类的东东,需要对父类的东东进行初始化,构造函数一般就是用来初始化的
回复 使用道具 举报
在创建对象时子类的构造函数中会默认调用父类的构造函数从
回复 使用道具 举报
子类构造方法默认有一个super();之所以会调用父类的构造是因为在子类实例化前 父类的属性必须先初始化 子类的后初始化 (先有父亲 后有儿子)
回复 使用道具 举报
夜愿Relax 来自手机 中级黑马 2015-6-2 12:24:57
11#
大家都说的很全了
回复 使用道具 举报
肯定会用到super();
super是在子类对象方法中对父类对象的引用。
在你New一个新的类时会调用该类的构造器,然而该类继承了B类,则会调用B类的构造器,若B类只有一个有参构造器,则会调用B类的有参构造器,若B类中含有两个构造器,一个有参一个无参,这样两个都可以调用。
回复 使用道具 举报
类A的构造函数的第一行会有一句默认语句super();    调用父类构造函数
回复 使用道具 举报
这是语法规定,构造子类之前必须先构造其父类;如果父类使用默认构造函数则子类构造函数调用父类的默认构造函数,否则,在子类构造函数中必须显式调用父类的构造函数。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马