黑马程序员技术交流社区

标题: 子父类的构造函数问题 [打印本页]

作者: 郭运明    时间: 2011-9-29 17:15
标题: 子父类的构造函数问题
当子类继承父类后,子类的构造函数可不可以和父类不一样
作者: 匿名    时间: 2011-9-29 17:19
你说的意思不是很明白???既然是构造函数,函数名肯定是和类名是一样的。但是在子类构造的过程中,一定要调用父类的构造方法(默认会调用无参的构造函数,没有的话,编译会出错)。
作者: 匿名    时间: 2011-9-29 17:26
标题: 回复 楼主 的帖子
构造函数不能继承,只是调用而已。
作者: 匿名    时间: 2011-9-29 17:28
子类的构造函数和父类的本来就是2个吧, 但是可以用父类来直接构造子类
作者: 匿名    时间: 2011-9-29 17:39
标题: 构造函数的调用
可以!子类可以用super()方法调用父类的构造函数。
作者: 匿名    时间: 2011-9-29 18:10
子类可以和父类的构造函数不一样,父类的构造函数不能被子类继承,因为子类继承父类的时候,先运行父类构造函数;具体的说就是运行父类时就会先“调用”父类的构造函数,调用和继承是不同的,继承的含义其实是“扩展”,子类完全没必要扩展父类的构造函数,因为反正每次调子类的时候都会“自动运行”它父类的构造函数,如果真的需要子类构造函数特殊的形式,子类直接修改或重载自己的构造函数就好了,所以子类不能继承父类的构造函数,那必须可以和父类的构造函数不同。
作者: 匿名    时间: 2011-9-29 18:22
可以,还可以重载
作者: 匿名    时间: 2011-10-1 19:29
1. 可以不一样的。举个简单的例子,假设父类Class Parent中不去定义构造函数。
2. 创建子类Class Child extends Parent, 在其中定义 Child(int n)的构造函数。
3. 那么在Child(int n)中的第一行,实际隐含着super(); 也就是调用父类默认的构造函数。
4. 但此时可以发现,子类的构造函数是Child(int n),而父类的却是默认的Parent(),二者并不同。




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