接口和抽象类

接口和抽象类

 

        今天自学了一下接口,从第一次接触接口又进一步理解接口的原理。想到接口或许我们更多的是想到和类的对比,而类中抽象类和接口又更为相似。现在我讲下我对接口和抽象类的理解。

如果单从具体代码来看,对这两个概念很容易模糊,甚至觉得接口就是多余的,因为单从具体功能来看,除多重继承外(C#),抽象类似乎完全能取代接口。但是,难道接口的存在是为了实现多重继承?当然不是。个人觉得抽象类和接口的区别在于使用动机。使用抽象类是为了代码的复用,而使用接口的动机是为了实现多态性。所以,如果当为某个地方该使用接口还是抽象类而犹豫不决时,那么可以想想你的动机是什么。
如果我们的项目中有Women和Man,都继承Person,而且Women和Man绝大多数方法都相同,只有一个方法Play()不同,那么当然定义一个AbstractPerson抽象类比较合理,因为它可以把其他所有方法都包含进去,子类只定义Play(),大大减少了重复代码量。 
        总的来说,两者最大的区别是抽象类中的方法可以有具体的实现,而接口不可以。



 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值