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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 吕振中 中级黑马   /  2013-5-23 15:06  /  1537 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 吕振中 于 2013-5-23 15:53 编辑

类中有默认的构造函数,接口作为一个特殊的类是否也有默认的构造函数。

评分

参与人数 1技术分 +1 收起 理由
袁梦希 + 1 赞一个!

查看全部评分

5 个回复

倒序浏览

回帖奖励 +3

楼主你好:
首先说一下,接口是对功能的扩展,所以接口中没有构造函数,为什么抽象类中有构造函数呢,他是为了方便子类进行实例化,但是抽象类本身不能被实例化。
因为抽象类的子类实例化的时候,因为是单继承,所以会很容易找到并且调用抽象类中的构造方法,所以必须要在抽象类中定义构造方法,或者有默认的构造方法,
构造方法也叫构造函数。

而如果是接口,因为接口是功能的扩展,需要多实现,如果你定义了构造函数,你知道子类实例化的时候该去找哪个接口中的构造函数吗?
所以java中规定接口中不能有构造函数。

希望能够帮到你

                                                             ___云青年为您解答
------------------------------------------------------------------------------------------------------------------------------------------------------------

楼主如果你不清楚加分规则,请看我的个性签名。↓

点评

叼!  发表于 2013-5-23 22:09

评分

参与人数 1技术分 +1 收起 理由
曹睿翔 + 1 亲力亲为,牛叉

查看全部评分

回复 使用道具 举报
构造函数是用来在对象初始化前对对象进行一些预处理的,接口的话你只是声明而已,不一定要进行什么初始化,就算要进行初始化,也可以到实现接口的那一些类里面实现;所以编译器就都这样子规定

评分

参与人数 1技术分 +1 收起 理由
袁梦希 + 1

查看全部评分

回复 使用道具 举报
接口中是没有默认的构造函数的。
因为接口虽然是一个特殊的类,但是它封装的是程序功能的扩展。也就是说,接口里面的内容,子类可以有选择性的实现,我要这个功能我就实现接口,并覆写其中的方法,不要就不实现接口。而且它定义的内容没有方法体,如果它含有默认的构造函数,相当于给它进行初始化了,对于没有方法体的接口,初始化显然没什么意义,并且有悖于接口作为功能扩展的定义。

评分

参与人数 1技术分 +1 收起 理由
袁梦希 + 1

查看全部评分

回复 使用道具 举报
多谢二位的解答。
回复 使用道具 举报
接口是没有默认构造方法的,接口里的方法全是抽象方法,因为默认修饰符public abstract 接口里的变量全是常量,默认修饰符public static final
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马