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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

java中 为什么Object类要有一个空的构造函数???

评分

参与人数 1技术分 +1 收起 理由
刘芮铭 + 1

查看全部评分

6 个回复

倒序浏览
其他的类之所以可以不用给他写无参的构造函数(方法),就是因为这些类继承了Object类,也就继承了Object的构造方法。而Object是所有类的父类(基类),它没有父类,没有其他类给它继承了,所以必须要有无参的构造函数,否则不能进行Object的实例化。

评分

参与人数 1技术分 +1 收起 理由
刘芮铭 + 1

查看全部评分

回复 使用道具 举报
Object类中并没有写空的构造方法,每个类没有自己定义构造方法,系统都会给它一个默认构造方法,你看的构造方法应该是在API上面看到的吧。你把Object类反编译一下

评分

参与人数 1技术分 +1 收起 理由
刘芮铭 + 1

查看全部评分

回复 使用道具 举报
这个应该是用于实例化对象的吧!跟1L说的那样
回复 使用道具 举报
本帖最后由 王振 于 2012-11-6 22:08 编辑

首先有几点是需要明确的:
1、当你创建一个类时,若不明确定义构造器,系统会自动为你自定义的类提供一个无参构造器。若定义若干个构造器(无论有参还是无参),系统将不再提供默认构造器。
2、当你定义一个类继承另一个类时,子类构造器会在第一句隐式的调用父类的无参构造器。
3、当你的父类中定义了一个有参构造器时,依据第一条,父类中将不存在无参构造器,这是子类若要调用父类无参构造器就会出错。
4、当出现第3条中的情况时,你只能在子类构造器中显式调用父类中可用的构造器,才能编译通过。

考虑到以上几点,又由于Object是所有类的父类,也就是说每个类的构造器中都会隐式的调用Object的无参构造器。
这种情况下,最好的方式就是在Object中显示的定义一个无参构造器,以避免上面第3条的情况。

希望可以对你有所帮助。

评分

参与人数 1技术分 +1 收起 理由
刘芮铭 + 1

查看全部评分

回复 使用道具 举报
其他的类之所以可以不用给他写无参的构造函数(方法),就是因为这些类继承了Object类,也就继承了Object的构造方法。而Object是所有类的父类(基类),它没有父类,没有其他类给它继承了,所以必须要有无参的构造函数,否则不能进行Object的实例化。
回复 使用道具 举报
Crondy 初级黑马 2012-11-6 22:21:16
7#
不一定每个类都要有构造方法,取决于对业务的实现性,如果你想new 对象的时候就做初始化一批数据,肯定要有构造方法,如果不需要,则不需要构造方法,或者有里面为空……
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马