您的位置:首页 > 编程语言 > Java开发

Java中接口与抽象类的区别

2017-01-26 20:00 330 查看
java中接口和抽象类自己理解起来经常混淆,所以我就整体总结一下这两个概念。

1. 接口

接口是指一个方法的集合,接口中所以的方法都没有方法体,使用interface关键字来实现。注意,接口中可以有成员变量,但是成员变量必须是static final类型,而且必须要赋初始值(原因是接口就是提供一种统一的’协议’,而接口中的属性也属于‘协议’中的成员.它们是公共的,静态的,最终的常量.相当于全局常量.)。

接口的目的:定义接口是为了实现一种共同的协议,统一标准的目的,是大家都知道这个是做什么的,但是具体不用知道具体怎么做。

2. 抽象类

抽象类的定义是如果一个类中包含抽象方法,那么这个类就是抽象类,使用abstract关键字修饰。注意,抽象类中可以包含非抽象方法。抽象方法是指只有函数定义,没有函数的实现。

使用抽象类的目的:只知道子类应该具有某种方法,但是不知道该方法的具体实现,从而约束子类必须有这样的方法,具体如何实现就由子类来完成;从多个具有相同特征的类中抽象出一个抽象类,以这个抽象类作为子类的模板,从而避免了子类设计的随意性。

二者的相同点:

都不能被实例化;

接口的实现类或者抽象类的子类都只有实现了接口或者抽象类中的方法后才能被实例化。

不同点:

接口中所有的方法隐含的都是抽象的。而抽象类则可以同时包含抽象和非抽象的方法。

类可以实现很多个接口,但是只能继承一个抽象类。

接口强调特定功能的实现(has-a),抽象类强调所属关系(is-a)。

接口中成员变量默认是public static final,其成员方法都是public、abstract的,只能被这两个关键字修饰。抽象类有自己的数据成员变量,成员变量默认是default,当然也可以被定义为其他。抽象类中的抽象方法不能用private,static,synchronized,native等访问修饰。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: