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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

为什么抽象类可以有构造方法,而接口不能有构造方法?

评分

参与人数 1技术分 +1 黑马币 +3 收起 理由
狼王 + 1 + 3 赞一个!

查看全部评分

10 个回复

倒序浏览
刷ke{:soso_e121:}吧!!!!!!
回复 使用道具 举报
抽象类中可以有函数的具体实现。
而接口不提供任何具体实现
接口中不能定义构造器的理由:
1. 构造器用于初始化成员变量,接口没有成员变量
2. 类可以实现多个接口,若多个接口都有自己的构造器,则不好决定构造器链的调用次序
3. 构造器是属于类自己的,不能继承。因为是纯虚的,接口不需要构造器。

评分

参与人数 1技术分 +1 黑马币 +3 收起 理由
狼王 + 1 + 3 赞一个!继续努力哈

查看全部评分

回复 使用道具 举报
抽象类和接口中都可以包含静态成员变量,抽象类中的静态成员变量的访问类型可以任意,
但接口中定义的变量只能是public static final类型,并且默认即为public static final类型。
我们知道,构造器是用来给成员变量初始化的,而被final修饰的成员变量是不能被修改的,
必须在一定义时就给定一个值,因此接口中并不需要构造函数来初始化成员变量。

评分

参与人数 1技术分 +1 黑马币 +3 收起 理由
狼王 + 1 + 3 赞一个!继续努力哈。。。

查看全部评分

回复 使用道具 举报
抽象类中可以有抽象方法也可以具体方法体,接口中只能有抽象方法,不能有具体方法体,构造方法就是具体方法体,所以接口中不能出现构造方法。

评分

参与人数 1技术分 +1 黑马币 +3 收起 理由
狼王 + 1 + 3 赞一个!

查看全部评分

回复 使用道具 举报
构造方法难道也抽象一下 ?
回复 使用道具 举报
接口只能实现..........
回复 使用道具 举报
抽象类中可以有抽象方法,也可以有非抽象方法,而 构造方法 就属于非抽象方法这一列。
接口呢,你需要记住,接口中所有的方法都是抽象的,那么就不能存在非抽象的构造方法。

评分

参与人数 1技术分 +1 黑马币 +3 收起 理由
狼王 + 1 + 3 你都没有发过主题帖

查看全部评分

回复 使用道具 举报
抽象类的定义的类中含有抽象方法,则这个类必须是抽象类。
而关于接口的定义,接口中的所有方法都只声明,不实现。
如果接口有构造方法,那么它就能被实例化,而这个和接口的定义是矛盾的,所以接口不能有构造方法。

评分

参与人数 1技术分 +1 收起 理由
狼王 + 1 很给力!

查看全部评分

回复 使用道具 举报
接口与类是两个平行定义,首先一个是继承(抽象类),一个是实现(接口);
根据构造器传递,子类构造默认访问父类空参,继承只有一个直接父类.
而实现是可以多实现的,如果接口有构造器,你子类是访问哪一个呢.反向考虑接口就不能存在构造器.
而且,接口不是Object的子类.它是一个特殊存在

评分

参与人数 1技术分 +1 黑马币 +3 收起 理由
狼王 + 1 + 3 不一样的思维。。。

查看全部评分

回复 使用道具 举报
本帖最后由 ysunday 于 2013-12-3 00:53 编辑
凌风 发表于 2013-12-1 21:10
抽象类中可以有函数的具体实现。
而接口不提供任何具体实现
接口中不能定义构造器的理由:

挺好。挺厉害呀少年,加上quan23355回答的就更完美了
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马