接口和抽象类

来源:互联网 发布:js的面向对象编程 编辑:程序博客网 时间:2024/05/21 08:04

接口和抽象类

 

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

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



 

原创粉丝点击