黑马程序员技术交流社区

标题: 为什么接口没有构造函数 [打印本页]

作者: AnrryHo    时间: 2016-4-22 22:56
标题: 为什么接口没有构造函数
为什么接口没有构造函数
作者: 东方乔恩    时间: 2016-4-22 23:00
1,因为接口不能实例化,所以不用构造函数
作者: 东方乔恩    时间: 2016-4-22 23:03
2,因为接口中的方法都是抽象方法,没有方法体,这样就不能执行构造函数的功能,所以没有构造函数
3,如果有抽象的构造方法,那实现它的子类没法重写啊,不能让子类初始化父类啊
作者: Unknown_Explore    时间: 2016-4-22 23:06
东方乔恩 发表于 2016-4-22 23:00
1,因为接口不能实例化,所以不用构造函数

那为什么抽象类也不能实例化,为什么它就有构造函数呢?
作者: Unknown_Explore    时间: 2016-4-22 23:08
东方乔恩 发表于 2016-4-22 23:03
2,因为接口中的方法都是抽象方法,没有方法体,这样就不能执行构造函数的功能,所以没有构造函数
3,如果有抽象 ...

还是老问题,你这么说,那抽象类怎么解释。
作者: 东方乔恩    时间: 2016-4-22 23:13
Unknown_Explore 发表于 2016-4-22 23:08
还是老问题,你这么说,那抽象类怎么解释。

我的第二点可以回答你,抽象类中的构造方法可以不是抽象的,有方法体,能完成初始化,而接口中的方法都是抽象的,没有方法体,没法进行初始化.
作者: heimoshui    时间: 2016-4-22 23:24
本帖最后由 heimoshui 于 2016-4-22 23:43 编辑

抽象类不能创建对象,但有构造方法,作用是让子类初始化时,对抽象类的数据进行初始化,
原因子类初始化前,必须先将父类初始化,因为子类初始化有可能要用到父类的数据。

接口中的所有方法都是抽象的,没有方法实体,成员变量也都是常量,
方法在方法区中,常量在常量池中,
而对象是在堆内存中的,所以接口跟对象没有半毛钱的关系,
作者: johnli    时间: 2016-4-22 23:28
楼上回复不错,共同加油
作者: 请叫我一声辉哥    时间: 2016-4-22 23:31
事实上事实上事实上事实上事实上事实上
作者: mrwalker    时间: 2017-3-12 17:31
Unknown_Explore 发表于 2016-4-22 23:08
还是老问题,你这么说,那抽象类怎么解释。

抽象类的子类需要通过抽象类的构造方法来创建对象丫,而接口是直接通过其它类来实现的,接口中定义构造方法没意义,它所有的方法都是抽象的,没有方法实体,成员变量也都是常量
作者: 亮仔开发    时间: 2017-3-12 19:56
接口是功能的集合,并且只是功能的声明,没有功能的主体。而构造函数其实就是创建一个对象,对象是类的实例。所以接口没有构造函数
作者: ccv5873    时间: 2017-3-13 09:50
东方乔恩 发表于 2016-4-22 23:00
1,因为接口不能实例化,所以不用构造函数

这是什么逻辑?抽象类也不能实例化,但是它就有构造器……




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