我对接口与抽象类的理解

1、从编程思想上来讲,抽象类首先是类,具有分类学的意义,有两层含义,一是以研究对象的整体来划分的,二是互斥性。类一定存在具体的对象才有意义。分类一般采用树型层级进行。一般情况下,上一层分类都是对下一层分类的分类。而接口表达的是一种标准,本身不具有分类学意义,但可以作为一种分类的属性。接口是从对象的局部特征或者功能来进行的,但它并不代表对象。因此类表述的是一种“是(IS)”的概念,而接口表述的是一种“具有”或者“拥有”(HAS)的概念。至于抽象的概念,严格的讲,在这个层次上,类本身就是一种抽象。但我们也可以把抽象类看作是对类本身的分类,在分类层级上,处于枝节点,而普通类处在叶子节点上。(理解类的时候不要从生物学的继承来理解,类的继承只是借用了这个生物学概念)

2、从语言级实现层面上来讲,一般抽象类不能实例化,接口也不能实例化(接口本身也不具有实例化的意义).作为类来讲,一般语言不支持类的多继承,大多支持类实现多个接口(这主要是为了实现和理解)。一般来讲,两者的应用场景是不一样的。但如果偷换概念的相互替代,从编程的技术实现上来讲是可以的,但不利于理解。

另外,很多书中提到的面向对象编程中的面向接口编程的原则(多用接口,少用继承),其实如果按照接口和类的内涵来讲,这个原则提得有些牵强,一是没有定量性标准,二是容易误导开发人员。接口和类的使用应该是如果表达的是一种"IS"的关系就用继承(类),如果表达的是一种“Has"则用接口。

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值