抽象类、接口的区别

  • 参考以下大佬文章
  1. 每个程序员都必须搞懂的抽象类和接口的含义以及区别
  2. 抽象类(abstract class)和接口(Interface)的区别
  3. 接口(Interface)与抽象类(Abstract Class)的区别?
抽象类(Abstract Class)
是什么?
  • 官方:抽象类往往用来表征对问题领域进行分析、设计中得出的抽象概念,是对一系列看上去不同,但本质上相同的具体概念的抽象。
  • 说人话:比如我们熟悉的泰迪,二哈,阿拉斯加等等,他们大小形态有很大区别,我们如何把他们抽象一下呢?就是把它们本质上相同的一些东西给抽象出来,比如,他们都有耳朵,尾巴,四肢等等,至于耳朵时是什么样子的,尾巴是长是短?这就交给子类来实现狗这个抽象方法了。
作用
  1. 用于隐藏
    对类型进行隐藏,我们可以构造出一个固定的一组行为的抽象类型,一个行为可以有任意个可能的具体实现方式(参考多态)。这个抽象的描述就是抽象类。
  2. 用于拓展对象行为功能
    这一组任意个可能的具体实现表现为所有可能的子类,模块可以操作一个抽象类,由于模块依赖于一个固定的抽象类,那么它是不允许修改的,同时通过这个抽象类进行派生,拓展此模块的行为功能。(参考开闭原则)
接口(Interface)
是什么?
  • 泛指实体把自己提供给外界的一种抽象化,用以由内部操作分理处外部构造方法,使其能内部修改而不影响外界其他实体与其交互的方式。
  • 说人话:接口就是一种特殊的 Abstract Class,但是比 Abstract Class 更抽象
语法
语法备注
作用
  1. 弥补 java类的单继承的问题,曲线救国,作为继承关系的一个补充
  2. 把程序模块进行固化的契约,降低耦合。把若干功能拆分出来,按照契约来进行实现和依赖。(依赖倒置原则)
  3. 定义接口有利于代码的规范。(接口分离原则)
    抽象是一种模板设计,接口是一种行为规范
  • 对于一个模板而言,我们只需要修改模板中的方法,那么所有子类的方法就能得到更新;对于接口中方法,需要在所有实现类中自行修改,才能得到更新,并且互不相干。
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值