黑马程序员技术交流社区

标题: 子类和父类的问题 [打印本页]

作者: yuchunfeng1221    时间: 2013-10-8 14:52
标题: 子类和父类的问题
son类 继承father类 ,father类继承grandfather类son能调用grandfather指定的有参的构造函数吗?
求指点

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

答非所问呢,我问的是子类son可不可以直接调用父类的父类grandfather的构造函数???

作者: 郑齐育    时间: 2013-10-8 16:03
不可以的,我们在子类中的构造方法使用super()语句来调用父类中的构造方法,是因为父类中没有无参构造方法,也就是编译器要先构造父类在构造子类,同样的爷爷类是先于父类初始化的,所以编译器会从爷爷类开始逐步向下进行初始化,你现在要在孙子类中直接调用爷爷类中的构造方法,编译器先构造出父类,但是父类中不存在爷爷类中的构造函数,所以不可以。
作者: FFF    时间: 2013-10-8 16:10
yuchunfeng1221 发表于 2013-10-8 15:34
答非所问呢,我问的是子类son可不可以直接调用父类的父类grandfather的构造函数???
...

不可以!请自己看原因!
作者: yuchunfeng1221    时间: 2013-10-8 16:23
FFF 发表于 2013-10-8 16:10
不可以!请自己看原因!

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

谢谢你,非常感谢
作者: 郑齐育    时间: 2013-10-8 16:50
没事,也帮我回顾了一些知识。




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