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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© yuchunfeng1221 中级黑马   /  2013-10-8 14:52  /  1938 人查看  /  7 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

son类 继承father类 ,father类继承grandfather类son能调用grandfather指定的有参的构造函数吗?
求指点

7 个回复

倒序浏览
对于子类调用父类的构造方法可以做出如下解释: 子类无条件地继承父类的不含参数的构造方法。
    如果子类自己没有构造方法,则它将继承父类的无参数构造方法作为自己的构造方法;如果子类自己定义了构造方法,则在创建新对象时,它将先执行继承自父类的无参数构造方法,然后再执行自己的构造方法。
    对于父类含参数的构造方法,子类可以通过在自己的构造方法中使用 super 关键字来调用它,但这个调用语句必须是子类构造方法的第一个可执行语句。

评分

参与人数 1黑马币 +3 收起 理由
李江 + 3

查看全部评分

回复 使用道具 举报 0 1
FFF 发表于 2013-10-8 15:11
对于子类调用父类的构造方法可以做出如下解释: 子类无条件地继承父类的不含参数的构造方法。
    如果子类 ...

答非所问呢,我问的是子类son可不可以直接调用父类的父类grandfather的构造函数???
回复 使用道具 举报
不可以的,我们在子类中的构造方法使用super()语句来调用父类中的构造方法,是因为父类中没有无参构造方法,也就是编译器要先构造父类在构造子类,同样的爷爷类是先于父类初始化的,所以编译器会从爷爷类开始逐步向下进行初始化,你现在要在孙子类中直接调用爷爷类中的构造方法,编译器先构造出父类,但是父类中不存在爷爷类中的构造函数,所以不可以。

评分

参与人数 1技术分 +1 收起 理由
李江 + 1

查看全部评分

回复 使用道具 举报
yuchunfeng1221 发表于 2013-10-8 15:34
答非所问呢,我问的是子类son可不可以直接调用父类的父类grandfather的构造函数???
...

不可以!请自己看原因!
回复 使用道具 举报
FFF 发表于 2013-10-8 16:10
不可以!请自己看原因!

这回我明白了,谢谢
回复 使用道具 举报
郑齐育 发表于 2013-10-8 16:03
不可以的,我们在子类中的构造方法使用super()语句来调用父类中的构造方法,是因为父类中没有无参构造方法 ...

谢谢你,非常感谢
回复 使用道具 举报
没事,也帮我回顾了一些知识。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马