接口vs抽象类的区别?如何用普通的类模拟抽象类和接口?

接口类和抽象类作用

  1. 在面向对象编程中,抽象类接口类是两个经常被用到的语法概念,是面向对象四大特性【封装,抽象,继承,多态】,以及很多设计思想设计原则设计模式、编程实现的基础。
  2. 使用接口类来实现面向对象的抽象特性、多态特性
  3. 使用接口类践行基于接口而非实现的设计原则
  4. 使用抽象类来实现面向对象的继承特性
  5. 使用抽象类实现模板设计模式等等
  6. 并不是所有的预言都支持这两种语法机制,比如C++只有抽象类的概念,没有接口的概念,python,这两种语法概念都不支持,尽管有些编程语言没有提供现成的语法来支持接口和抽象类,我们仍然可以通过一些手段来模拟实现这两个语法概念。

抽象类定义

  1. 抽象类只能被用来继承,不能用来创建对象
  2. 类中可以包含属性和方法,可以有多个方法,但至少有一个方法,只是定义,没有实现,没有实现的方法,我们称之为抽象方法
  3. 子类继承抽象类,必须要实现抽象类中所有的抽象方法

接口类定义

  1. 接口类也是只能被用来继承,不能用来创建对象
  2. 接口类中只能包含方法,不能包含属性
  3. 接口类中的所有方法,都只能是抽象方法,也就是只有定义,没有实现
  4. 某一个类实现了某一个接口类,必须实现接口类中所有的抽象方法

如何决定该用抽象类还是接口?

在代码设计、编程开发的时候,什么时候该用抽象类?什么时候该用接口?实际上,判断的标准很简单。如果我们要表示一种 is-a 的关系,并且是为了解决代码复用的问题,我们就用抽象类;如果我们要表示一种 has-a 关系,并且是为了解决抽象而非代码复用的问题,那我们就可以使用接口。从类的继承层次上来看,抽象类是一种自下而上的设计思路,先有子类的代码重复,然后再抽象成上层的父类(也就是抽象类)。而接口正好相反,它是一种自上而下的设计思路。我们在编程的时候,一般都是先设计接口,再去考虑具体的实现

抽象类和接口存在的意义

抽象类是对成员变量和方法的抽象,是一种 is-a 关系,是为了解决代码复用问题。接口仅仅是对方法的抽象,是一种 has-a 关系,表示具有某一组行为特性,是为了解决解耦问题,隔离接口和具体的实现,提高代码的扩展性。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值