黑马程序员技术交流社区

标题: 为什么抽象类可以有构造方法,而接口不能有构造方法? [打印本页]

作者: 邀明月    时间: 2013-12-1 20:43
标题: 为什么抽象类可以有构造方法,而接口不能有构造方法?
为什么抽象类可以有构造方法,而接口不能有构造方法?
作者: 还不到时候    时间: 2013-12-1 21:08
刷ke{:soso_e121:}吧!!!!!!
作者: 凌风    时间: 2013-12-1 21:10
抽象类中可以有函数的具体实现。
而接口不提供任何具体实现
接口中不能定义构造器的理由:
1. 构造器用于初始化成员变量,接口没有成员变量
2. 类可以实现多个接口,若多个接口都有自己的构造器,则不好决定构造器链的调用次序
3. 构造器是属于类自己的,不能继承。因为是纯虚的,接口不需要构造器。

作者: quan23355    时间: 2013-12-1 21:21
抽象类和接口中都可以包含静态成员变量,抽象类中的静态成员变量的访问类型可以任意,
但接口中定义的变量只能是public static final类型,并且默认即为public static final类型。
我们知道,构造器是用来给成员变量初始化的,而被final修饰的成员变量是不能被修改的,
必须在一定义时就给定一个值,因此接口中并不需要构造函数来初始化成员变量。
作者: 陪你等日出    时间: 2013-12-2 10:03
抽象类中可以有抽象方法也可以具体方法体,接口中只能有抽象方法,不能有具体方法体,构造方法就是具体方法体,所以接口中不能出现构造方法。
作者: 枫儿    时间: 2013-12-2 11:25
构造方法难道也抽象一下 ?
作者: ζ丶凡σ    时间: 2013-12-2 11:58
接口只能实现..........
作者: 胡陈思    时间: 2013-12-2 13:16
抽象类中可以有抽象方法,也可以有非抽象方法,而 构造方法 就属于非抽象方法这一列。
接口呢,你需要记住,接口中所有的方法都是抽象的,那么就不能存在非抽象的构造方法。
作者: 高正新    时间: 2013-12-2 15:06
抽象类的定义的类中含有抽象方法,则这个类必须是抽象类。
而关于接口的定义,接口中的所有方法都只声明,不实现。
如果接口有构造方法,那么它就能被实例化,而这个和接口的定义是矛盾的,所以接口不能有构造方法。
作者: 王东旭    时间: 2013-12-2 17:56
接口与类是两个平行定义,首先一个是继承(抽象类),一个是实现(接口);
根据构造器传递,子类构造默认访问父类空参,继承只有一个直接父类.
而实现是可以多实现的,如果接口有构造器,你子类是访问哪一个呢.反向考虑接口就不能存在构造器.
而且,接口不是Object的子类.它是一个特殊存在
作者: ysunday    时间: 2013-12-3 00:51
本帖最后由 ysunday 于 2013-12-3 00:53 编辑
凌风 发表于 2013-12-1 21:10
抽象类中可以有函数的具体实现。
而接口不提供任何具体实现
接口中不能定义构造器的理由:

挺好。挺厉害呀少年,加上quan23355回答的就更完美了




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