黑马程序员技术交流社区

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

作者: 吕振中    时间: 2013-5-23 15:06
标题: 构造函数问题
本帖最后由 吕振中 于 2013-5-23 15:53 编辑

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

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

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

希望能够帮到你

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

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


作者: ozt6719393    时间: 2013-5-23 15:20
构造函数是用来在对象初始化前对对象进行一些预处理的,接口的话你只是声明而已,不一定要进行什么初始化,就算要进行初始化,也可以到实现接口的那一些类里面实现;所以编译器就都这样子规定
作者: 张得贵    时间: 2013-5-23 15:53
接口中是没有默认的构造函数的。
因为接口虽然是一个特殊的类,但是它封装的是程序功能的扩展。也就是说,接口里面的内容,子类可以有选择性的实现,我要这个功能我就实现接口,并覆写其中的方法,不要就不实现接口。而且它定义的内容没有方法体,如果它含有默认的构造函数,相当于给它进行初始化了,对于没有方法体的接口,初始化显然没什么意义,并且有悖于接口作为功能扩展的定义。
作者: 吕振中    时间: 2013-5-23 15:54
多谢二位的解答。
作者: Sofoul    时间: 2013-5-23 17:54
接口是没有默认构造方法的,接口里的方法全是抽象方法,因为默认修饰符public abstract 接口里的变量全是常量,默认修饰符public static final




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