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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© lostnotes 中级黑马   /  2015-3-14 10:00  /  1217 人查看  /  8 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

昨天被问到这个问题想了半天没回答上来求教各位大神了
抽象类和接口有什么区别和联系?

8 个回复

正序浏览
长知识了,总结的都很到位
回复 使用道具 举报
1.接口一般是用来进行功能扩展的,而抽象类一般是类的向上抽取
2.接口中的方法都是抽象的,而抽象类中可以有抽象的方法也可以有非抽象方法,如果一个类没有实现接口中的所有的抽象方法,只实现了部分,该类就是抽象类
3.接口中定义的常量和抽象方法的修饰符是固定的,而抽象类中的需要自己指定
4.抽象类只能单继承,接口可以多实现
5.接口和抽象类都可以实现多态特性
回复 使用道具 举报
1、抽象类是继承,继承只能单继承
接口是实现,实现可以多实现
2、抽象类中可以定义非抽象方法,供子类直接使用。
接口的方法都是抽象,接口中的成员都有固定修饰符。
3、抽象类中可以私有变量或方法。
接口中的常量和方法都是public修饰的权限。
回复 使用道具 举报
我们打个比方:
抽象类:手机,平板,MP4等等有很多的共同点,但又不像苹果,小米为同一类型(手机),于是可以把这些共同点抽象出来作为一个抽象的的类型“移动设备”,这些共同点包括“属性”“行为”等;
接口:手机,平板都有蓝牙,而MP4却没有,那么对于这些很小,小到某个点的方法或属性,我们就可以单独提取出来作为一个独立存在的方法,任何类型接上这个接口都能拥有这样的方法,而且接口的作用就是降低耦合;
回复 使用道具 举报
接口是特殊的抽象类 这么理解
接口里所有的属性都是public static abstract 的 哦 接口不能new 只能被实现 一旦实现 强制要求实现其所有的方法
而抽象类 继承后仅实现其abstract方法即可 理解的不是很到位 可供参考
回复 使用道具 举报
简单来说, 接口是公开的,里面不能有私有的方法或变量,是用于让别人使用的,而抽象类是可以有私有方法或私有变量的,  另外,实现接口的一定要实现接口里定义的所有方法,而实现抽象类可以有选择地重写需要用到的方法,一般的应用里,最顶级的是接口,然后是抽象类实现接口,最后才到具体类实现。  还有,接口可以实现多重继承,而一个类只能继承一个超类,但可以通过继承多个接口实现多重继承,接口还有标识(里面没有任何方法,如Remote接口)和数据共享(里面的变量全是常量)的作用.
回复 使用道具 举报
抽象类:              1) 抽象方法,只有行为的概念,没有具体的行为实现。           使用:abstract 关键字修饰,并且没有方法体。               2) 包含抽象方法的类,就一定是抽象类。           使用: abstract 关键字修饰,包含抽象方法。           3) 抽象类不能直接创建实例。可以定义引用变量。          4) 抽象类只能被继承,一个具体类继承一个抽象类,必须实   现所有抽象方法。           5) 抽象方法和抽象类非常适合作为系统的分析和设计的工具。接口: 1 接口:全部的方法都是抽象方法,全部的属性都是常量。   接口用来表示纯抽象概念,没有任何具体的方法和属性。 2 不能实例化,可以定义变量。 3 接口变量可以引用具体实现类的实例。 4 接口只能被实现(继承),一个具体类实现接口,必须使用全部的   抽象方法。 5 接口之间可以继承。 6 一个具体类可以实现多个接口,实现多继承现象,表示: 7 接口中的属性,默认是常量 public static final  8 接中的方法一定是:public abstract  9 实现一个接口,使用关键字implements, 实现实际上是   一种继承关系。接口和实现类是父子类型的关系
回复 使用道具 举报
在初期的理解时,我们可以把接口理解为特殊的抽象类。接口和抽象类一样,在继承或者实现之后,如果希望之类不再是抽象类,就需要讲其中的抽象方法复写。对于接口来说,里面的方法必须是抽象方法。但是对于类来说却不一样,一个抽象类,里面可以有抽象方法,也可以没有。但是一旦类中有抽象方法,就必须讲类申明为抽象类
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马