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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

面试高频题:抽象类与接口的异同?希望能总结的好一点。

7 个回复

倒序浏览
本帖最后由 softzhang 于 2015-7-24 17:27 编辑

相同点:
都是不断向上进行抽取。
不同点:
1.1当抽象类方法都是抽象时,可以表示为接口。
1.2接口中的成员都是公共权限:
常量:public static final
函数:public abstract
2.1,抽象类是父类,需要被继承,只能单继承。abstract修饰
2.2,接口需要实现,是可以多实现的。interface修饰
2.3,接口和接口之间是继承关系,可以实现多继承
举例
interface A{public void show();}
interface B{public void show();}
interface C extends A,B{}
class Test implements A,Z
{public void show(){System.out.prinln("test")}}
3.1,抽象类可以定义抽象想法和非抽象方法,子类继承后可以直接使用非抽象方法,是继承关系。Zi extends Fu
3.2,接口只能定义抽象方法,必须由子类去实现,是实现关系.Zi implements Fu


回复 使用道具 举报
抽象类:当多个类中出现了相同的功能,但是功能主体不同时,可以对其进行向上抽取,只抽取功能定义,不抽取功能主体,抽象类中可以放抽象方法,也可以放一般方法。抽象类中可以有私有的成员。
接口:可以认为是一个特殊的抽象类,当抽象类中的方法都是抽象的,可以用接口来实现。接口中的成员都是public修饰的。
抽象类是类,用class定义,抽象类的子类不能继承其他类了,但他可以实现一个或多个接口,而接口是用interface定义的,他的子类也可以实现多个接口。
实现接口就一定要实现接口中的所有方法,而实现抽象类可以有选择地重写需要用到的方法。
因为java是单继承,所以使用接口也是对java中对多继承不支持的并以中实现。
回复 使用道具 举报
楼上回答的很详细,有用
回复 使用道具 举报
学习学习
回复 使用道具 举报
都很详细,有帮助。。。
回复 使用道具 举报
本帖最后由 AllenIverson 于 2015-7-25 12:02 编辑

抽象类与接口的异同
   
  
  抽象类 abstract class
接口interface,当抽象类方法都是抽象时,可以表示为接口,接口是公开的。
  成员变量
可以是 变量/常量
  只能是常量:public static final
  成员方法
可以是抽象/非抽象,可以包含静态方法,public/protected修饰
只能是抽象,没有方法体,没有静态方法,public abstract
  构造方法
  有
  没有
  关系区别
1. 类与类:继承,单继承
2. 一般的应用里,最顶级的是接口,然后是抽象类实现接口,最后才到具体类实现。
1. 类与接口:实现,单/多实现
2. 接口与接口:继承,单/多继承
3. 实现接口需要实现接口定义的所有方法
  设计理念
被继承体现的是is a的关系,抽象类中定义的是继承体系的共性功能。
被实现体验的是like a的关系,接口中定义的是该继承体系的扩展功能。

回复 使用道具 举报
1楼的好棒,截图做资料了,谢谢了!!!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马