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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 小白 黑马帝   /  2012-3-26 20:04  /  1876 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

构造函数可以重写么?为什么?
构造函数可以重载么?为什么?

4 个回复

倒序浏览
重写是子类重写父类的方法,方法名必须与类同名,所以不能重写
可以重载,类中的有参和无参的构造函数就属于重载。
回复 使用道具 举报
楼上正解,补充下
1.为什么构造函数不能重写?
重写的条件:子类继承父类,子父类函数名以及参数相同,由于父类里面的构造函数名和父类名相同,子类的构造函数名和子类名,两个构造函数的函数名必然会不同,所以子类构造函数不能覆盖父类构造函数.
应该是子类构造函数必然会调用父类构造函数,是调用,而不是覆盖.因为每个类里面都有默认的空参数构造函数,而子类构造函数第一行还有一个super().
2.为什么构造函数能重载?
重载的条件:函数名相同,参数类型和个数不同.重写是类与类之间的函数,重载是一个类里面的函数.在同一个类中,所有构造函数名都一样,另外,可以定义带参数的和空参数的构造函数,带参数的构造函数参数种类和个数都可以不同,所以构造函数可以重载.
回复 使用道具 举报
明白了,突然想到的问题想确认一下我与大家的想法是否一致!
回复 使用道具 举报
override(覆盖或覆写)是出现在子父类中,而子父类的构造函数都是用类名定义的,所以根本不可能覆盖或覆写。重载OverLoad是可以的,打开JAVA的API,好多类都有不止一个构造函数,有的没有参数,有的参数个数或类型不同。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马