抽象类和接口之异同

         抽象类和接口是何方神圣?在没有实践的时候,在我的脑海中它们只是两个很相似的概念,但是等派上用场的时候就不得不认真的对比分析。在机房合作中用到几个设计模式,在大话设计模式中,写的都是接口但代码实现用的都是抽象类,这时B层的人就郁闷了,问我画图是否错了?对比书上,感觉自己没错啊!但是经过认真分析和查资料发现原来它们是一对孪生姐妹,有着很多相似和不同之处,那么今天就让我们好好认识下这对姐妹。

       接下来就从接口和抽象类的定义接口和抽象类的异同能不能用抽象类代替接口?来分析

 一、抽象类:

         抽象类是特殊的类,只是不能被实例化;除此以外,具有类的其他特性;重要的是抽象类可以包括抽象方法,这是普通类所不能的。抽象方法只能声明于抽象类中,且不包含任何实现,派生类必须覆盖它们。另外,抽象类可以派生自一个抽象类,可以覆盖基类的抽象方法也可以不覆盖,如果不覆盖,则其派生类必须覆盖它们。

 二、接口:

        接口泛指实体把自己提供给外界的一种抽象化物(可以为另一实体),用以由内部操作分离出外部沟通方法,使其能被修改内部而不影响外界其他实体与其交互的方式,就如面向对象抽象技术提供的多重抽象化。接口可能也提供某种意义上的在讲不同语言的实体之间的翻译,诸如人类与电脑之间。因为接口是一种间接手段,所以相比起直接沟通,会引致些额外负担。

 三、抽象类和接口的相似之处有三点:

  1、不能实例化;

  2、包含未实现的方法声明  

  3、派生类必须实现未实现的方法,抽象类是抽象方法,接口则是所有成员(不仅是方法包括其他成员);   

    另外,接口有如下特性: 接口除了可以包含方法之外,还可以包含属性、索引器、事件,而且这些成员都被定义为公有的。除此之外,不能包含任何其他的成员,例如:常量、域、构造函数、析构函数、静态成员。一个类可以直接继承多个接口,但只能直接继承一个类(包括抽象类)。

四、抽象类和接口的区别:

        从实质上讲抽象类表示的是这个对象是什么。接口表示的是这个对象能做什么。

        比如男人,女人,这两个类(如果是类的话……),他们的抽象类是人。说明他们都是人。

                   人可以吃东西,狗也可以吃东西,你可以把“吃东西”定义成一个接口,然后让这些类去实现它

        接下来通过一张表来分析接口和抽象类的不同。

  抽象类和接口之异同_第1张图片

          综上所述就是现阶段对接口和抽象类的理解,在今后的学习中会慢慢的扩充和消化。


你可能感兴趣的:(抽象类和接口之异同)