接口和抽象类

接口和抽象类的区别

抽象类可以存放在普通成员函数,而接口中只能存在public abstract方法。

抽象类中的成员变量可以时各种类型的,而接口张的成员 变量只能是public static final 类型。

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

接口的设计,是对类的行为进行约束,强制要求不同的类具有共同的行为,它只约束行为的有无,但不对如何实现行为进行限制。

而抽象类的设计,是代码的复用。当不同的类具有某些相同的行为A,并且其中一部分行为的实现方式一致时B,可以让这些类都派生于一个抽象类。在这个抽象类中实现了B.避免让所有的子类实现B,达到代码复用。

抽象类是对类本质的抽象,表达的是 is 的关系 ,比如VW is a Car。抽象类包含并实现子类的通用特性,将子类存在差异化的特性进行抽象,交由子类实现。

接口是对行为的抽象 表示的是like a 的关系。比如Brid like a aircraft ,但其本质上还是brid,接口的核心是定义行为,实现类是谁,如何实现,接口并不关心。

当你注重本质的时候用抽象类,当你关注操作的时候用接口。

抽象类的功能远大于接口,但是抽象类代价高,只能继承一个。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

遇-见

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值