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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© xinchenglong 中级黑马   /  2013-8-24 20:32  /  1342 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

接口和抽象类之间存在怎样的关系呢,各自都有什么区别呢?在做项目的时候,是该考虑接口多一些呢?还抽象类呢?我感觉他们太接近了,麻烦大家参与讨论一下……

评分

参与人数 1技术分 +1 收起 理由
赵宗荣 + 1

查看全部评分

5 个回复

倒序浏览
1. 接口和抽象类都不能被直接实例化,都可以通过继承实现其抽象方法;
2. 接口支持多继承;
3. 抽象类不能实现多继承;
4. 接口只能定义行为;
5. 抽象类既可以定义行为,还可能提供实现;
6. 接口可以用于支持回调;
7. 抽象类不能实现回掉,因为继承不支持;
8. 接口只包含方法,属性,索引器,事件的签名,但不能定义字段和包含实现的方法。
回复 使用道具 举报 1 0
抽象类一般来说都存在继承关系,一个儿子想继承老子遗产,那就必须做到某件事才行,你做不到你就继承不了我的遗产,不是特别恰当,但也反应了抽象类的关键,就是一种约束,必须重写我里面的方法,不然你用不了,而java是单继承,所以局限性特别大,抽象方法用处就稍微有点弱势了
正因为单继承局限性太大,所以才出来了接口,你只需要实现一个又一个接口中的方法来充实这个类就可以,根本不需要考虑怎么实现的.
听已经工作的人说,现在大多用的还是接口 面向接口编程,实现接口

评分

参与人数 1技术分 +1 收起 理由
赵宗荣 + 1

查看全部评分

回复 使用道具 举报
1、抽象类里面可以有非抽象方法,但接口里只能有抽象方法 ,声明方法的存在而不去实现它的类被叫做抽像类(abstract class),它用于要创建一个体现某些基本行为的类,并为该类声明方法,但不能在该类中实现该类的情况。不能创建abstract 类的实例。然而可以创建一个变量,其类型是一个抽像类,并让它指向具体子类的一个实例。不能有抽像构造函数或抽像静态方法。Abstract 类的子类为它们父类中的所有抽像方法提供实现,否则它们也是抽像类为。取而代之,在子类中实现该方法。知道其行为的其它类可以在类中实现这些方法。
2、接口(interface)是抽像类的变体。在接口中,所有方法都是抽像的。多继承性可通过实现这样的接口而获得。接口中的所有方法都是抽像的,没有一个有程序体。接口只可以定义static final成员变量。接口的实现与子类相似,除了该实现类不能从接口定义中继承行为。当类实现特殊接口时,它定义(即将程序体给予)所有这种接口的方法。然后,它可以在实现了该接口的类的任何对像上调用接口的方法。由于有抽像类,它允许使用接口名作为引用变量的类型。通常的动态联编将生效。引用可以转换到接口类型或从接口类型转换,instanceof 运算符可以用来决定某对象的类是否实现了接口
回复 使用道具 举报
刚好我整理的有这块知识点, 比较清晰, 你可以看看.
 
普通类
抽象类
接口
定义关键字
class
abstract class
interface
继承性
可以继承非final的普通类,抽象类及实现接口
可以继承非final的普通类抽象类及实现接口
只可以继承其他接口
多继承
F
F
T
创建对象
T
F
F
用final修饰
T
F
F
成员变量
T
T
F
成员常量
T
T
T
普通方法
T
T
F
抽象方法
F
T
T
构造方法
T
T
F

评分

参与人数 1技术分 +1 收起 理由
赵宗荣 + 1 去参加入学考试吧

查看全部评分

回复 使用道具 举报
谢谢大家的给出的见解,真心谢谢了!!!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马