黑马程序员技术交流社区

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

作者: 小白    时间: 2012-3-26 20:04
标题: 构造函数的问题
构造函数可以重写么?为什么?
构造函数可以重载么?为什么?
作者: lipanfeng    时间: 2012-3-26 20:09
重写是子类重写父类的方法,方法名必须与类同名,所以不能重写
可以重载,类中的有参和无参的构造函数就属于重载。
作者: 张昊镭    时间: 2012-3-26 20:29
楼上正解,补充下
1.为什么构造函数不能重写?
重写的条件:子类继承父类,子父类函数名以及参数相同,由于父类里面的构造函数名和父类名相同,子类的构造函数名和子类名,两个构造函数的函数名必然会不同,所以子类构造函数不能覆盖父类构造函数.
应该是子类构造函数必然会调用父类构造函数,是调用,而不是覆盖.因为每个类里面都有默认的空参数构造函数,而子类构造函数第一行还有一个super().
2.为什么构造函数能重载?
重载的条件:函数名相同,参数类型和个数不同.重写是类与类之间的函数,重载是一个类里面的函数.在同一个类中,所有构造函数名都一样,另外,可以定义带参数的和空参数的构造函数,带参数的构造函数参数种类和个数都可以不同,所以构造函数可以重载.
作者: 小白    时间: 2012-3-26 20:38
明白了,突然想到的问题想确认一下我与大家的想法是否一致!
作者: 郑涛    时间: 2012-3-26 22:25
override(覆盖或覆写)是出现在子父类中,而子父类的构造函数都是用类名定义的,所以根本不可能覆盖或覆写。重载OverLoad是可以的,打开JAVA的API,好多类都有不止一个构造函数,有的没有参数,有的参数个数或类型不同。




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