接口和抽象类的区别

一.接口和抽象类的概念:

1.接口抽象类不同点:

   接口:包含了一组虚方法的抽象类型

     接口的特点:

    1. 接口中只包括虚方法的定义,只有声明定义,没有函数实现                (抽象类可以有实现
    2. 接口类中可以包括属性、事件、索引器等,但不能包括字段                (抽象类可以有字段
    3. 接口类属于多继承                                                                              (抽象类单继承,符合类的特点)
    4. 接口可以支持回调                                                                    (抽象类不支持回调)
    5. 继承了接口的类必须全部实现接口的方法

     抽象类:提供了一组派生类访问共享基类的公共方法

     抽象类的特点:

    1. 抽象类不能被实例化,也不能被密封
    2. 抽象类中的方法,在派生类中要有实现,没有实现的话,这个类就得是抽象类,在由这个类的派生类实现,方法得标记为抽象方法
    3. 派生类中实现 基类的抽象方法,必须使用override 修饰符

2.接口抽象类相同之处

  • 不能实例化,由派生类来实现
  • 都需要子类实现父类的方法

主要的一些差别:

接口介绍:

简单来说:接口就是一个实现方法的名称,具体的实现还是在于实现这个接口的类!

举个例子来说吧:

 

小动物们元宵喜乐会,大家show各自的才艺的时候到了。

 

    本命年的孙悟空孙大圣,他带来的节目是《大圣归来2——看我72变》;

           特地从任意门赶来的小叮当,带来的节目是《口袋魔术》;

           没有睡懒觉,从高老庄坐高铁早早来到的猪八戒,带来的节目是《猪猪侠的36计》。

这些拥有魔法可以变东西,技高一筹的动物们,掌握的可不止是普通动物“叫声”的技能了,普通动物是没有办法具备他们三只的特异功能的,也只有它们三只拥有变东西的方法,这些特定的方法封装成为一个集合,就是我们要了解的接口(interface)了。

这些技高一筹的动物虽然变出的东西不同,但是他们有一个共同的变出东西的方法,把变出东西的名称提取出来就是接口了! 

特点:

  1. 接口中的所有方法必须是抽象的;
  2. 不能指定访问修饰符
  3. 接口中不能包含字段
  4. 可以实现多个接口!

抽象类介绍:

抽象类就是对事物的一种抽象:

    举个例子:

      动物就是一个抽象类:动物共同特点:“叫声”

      猫属于动物,就可以发出叫声!

      狗也属于动物也可以发出叫声!

      问题:我们知道动物是可以发出叫声的,具体让动物叫,动物应该发出什么叫声呢?动物众多小动物的总称,是个抽象的东西。所以抽象类都有个具体的实现类!让一个动物叫,如果这个动物是猫就发出猫的叫声,如果这个动物是狗,就发出狗的叫声!

   因为类是单继承,所以创建动物对象时,这个动物只能是一个动物,要么是猫,要么是狗!

   所以让动物发出叫声,是猫实现的这个抽象类,就发出猫的叫声,是狗实现的这个抽象类就发出狗的叫声!

特点:

  1. 抽象类中可以有方法的实现,
  2. 可以有访问修饰符
  3. 只能单继承

下面通过实际的例子进行分析:

抽象类:

接口:

 

posted on 2015-06-03 16:09  风雪幻林  阅读(1666)  评论(0编辑  收藏  举报