浅谈---接口和抽象类的区别

在面试过程中,经常性被问到的一个知识点就是接口和抽象类的区别。
这个在Java学习中是必不可少的知识点,对于学习了一段时间,已经记忆有点模糊的概念,提出来在总结一下。

抽象类

对于抽象类的概念:

包含抽象方法的类叫做抽象类。如果一个类中包含一个或多个抽象方法,该类必须限定为抽象的(否则,编译器就会报错)

我们都知道抽象类用abstract来修饰。要实现抽象类中的抽象方法的话,用子类去继承抽象类,实现抽象方法。

接口

接口是特殊的抽象类,interface关键字使抽象的概念向前迈了一步。

相对于abstract关键字允许在类中创建一个或多个没有任何定义的方法,但是没有提供任何响应的具体事项,这些实现都是由此类的继承者创建的。interface这个关键字产生一个完全抽象的类,它根本就没有提供任何的实现。

在接口中,它允许创建者确定方法名、参数列表和返回类型,但是没有任何方法体。接口只提供了形式,而未提供任何具体实现。

接口的一般要用implements关键字来实现。

抽象类和接口的区别

  • 在结构组成上: 抽象方法的组成是,普通方法+普通方法。接口的组成是抽象方法+全局常量
  • 在权限上:抽象方法可以是各种权限,接口的全是想public
  • 子类的使用上:抽象类使用extends关键字继承抽象类,接口是使用implements关键字实现接口
  • 在关系上:一个抽象类可以实现若干接口,接口不能继承抽象类,但是接口可以使用extends关键字继承多个父接口
  • 子类的限制上:抽象类是一个子类只能继承一个抽象类,接口是一个子类可以实现多个接口

除了单继承的局限外,实际上使用抽象类和接口都是类似的,在实际的开发中我们渐渐会体会到:

  • 接口是Java开发的核心。
  • 开发中优先考虑接口,以避免单继承局限。
  • 抽象类是模板,有层次感;接口更关心行为与混用。

上边是概念性的知识点,这个我们需要清楚,在层次更深点讨论这个问题:

我们还需要注意:

  • 抽象类和接口都不能直接进行实例化,抽象类变量必须指向实现所有抽象方法的子类对象,接口必须指向实现所有接口方法的类对象
  • 抽象类要被子类继承,接口要被类实现
  • 接口只能做方法的声明,抽象类中既可以做方法的声明,也可以做实现。
  • 接口定义的变量只能是公共的静态常量,抽象类中的变量是普通变量
  • 抽象类可以继承若干接口,接口不能继承抽象类
  • 一个子类只能实现一个抽象类,一个子类可以实现多个接口
  • 在抽象类中可以写非抽象的方法,从而避免在子类中重复书写他们,这样可以提高代码的复用性,这是抽象类的优势;接口中只能有抽象的方法。

暂时先简单总结到这,后续若有补充再增加。小菜鸟也会有梦想,一起加油~

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值