Java中接口与抽象类的区别

java中接口和抽象类自己理解起来经常混淆,所以我就整体总结一下这两个概念。

1. 接口

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

2. 抽象类

抽象类的定义是如果一个类中包含抽象方法,那么这个类就是抽象类,使用abstract关键字修饰。注意,抽象类中可以包含非抽象方法。抽象方法是指只有函数定义,没有函数的实现。
使用抽象类的目的:只知道子类应该具有某种方法,但是不知道该方法的具体实现,从而约束子类必须有这样的方法,具体如何实现就由子类来完成;从多个具有相同特征的类中抽象出一个抽象类,以这个抽象类作为子类的模板,从而避免了子类设计的随意性。

二者的相同点:

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

不同点:

  1. 接口中所有的方法隐含的都是抽象的。而抽象类则可以同时包含抽象和非抽象的方法。
  2. 类可以实现很多个接口,但是只能继承一个抽象类。
  3. 接口强调特定功能的实现(has-a),抽象类强调所属关系(is-a)。
  4. 接口中成员变量默认是public static final,其成员方法都是public、abstract的,只能被这两个关键字修饰。抽象类有自己的数据成员变量,成员变量默认是default,当然也可以被定义为其他。抽象类中的抽象方法不能用private,static,synchronized,native等访问修饰。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值