在C#中抽象类和接口是两个相当重要的概念,深入理解对C#程序员是非常必要的,现总结如下:

一、抽象类的特点:

1、抽象方法只用于方法的声明并不包含方法的实现,可以看作没有实现实体的虚方法。

2、抽象类不能进行实例化。

3、抽象类里面可以不包含抽象属性和抽象方法,但如果包含抽象方法,则该类必须声明为抽象类。

4、具体的派生类必须覆盖基类的抽象方法。

5、抽象类也可以派生另一个抽象类,其中可以覆盖基类的抽象方法也可以不用覆盖,但是不覆盖的话,

则其派生类比较覆盖它们。

二、接口(interface)的特点

1、接口也不能进行实例化。

2、接口只能包含类的声明。

3、成员可以包含属性、方法、事件和索引器。

4、接口中不能包含常量、字段、构造函数、析构函数或静态成员。

5、接口 中所有的成员都默认用public修饰符进行修饰,不能出现private修饰符。

6、派生类比较实现接口所有的成员。

7、一个可以继承多个接口,接口之间用 , 分割。

8、一个接口可以有多个父接口,实现该接口的类必须实现所有父接口中的所有成员。

三、抽象类和接口的相同之处

1、都不能被实例化。

2、都可以被继承。

3、都可以包含方法声明。

4、派生类必须实现抽象类(接口)中未实现的方法。

四、抽象类和接口的不同之处

1、抽象类是一个不完整的类,需要进一步细化;接口只是一个行为的规范或规定。

2、抽象基类可以定义字段、属性和方法实现;接口只能定义属性、索引器、事件和方法声明,不能包含字段。

3、抽象类更多的是定义在一系列关系紧密的类之间;接口大多定义在关系稀松但都实现某一功能的操作。

4、接口不具有继承的任何特点。

5、接口可以被多重实现,抽象类只能被单一继承。

6、接口支持回调,抽象类不可以。

7、抽象类不能密封。

8、抽象类实现的具体方法默认为虚的;但实现接口的类中的接口方法默认不是虚的,当然也可手动声明为虚的。

9、接口和非抽象类类似,抽象类必须为在该类的基类列表中列出的接口的所有成员提供他自己的实现。但是允许抽象类将接口的方法隐射到抽象方法上。

10、如果抽象类实现接口,则可以把接口中的方法映射到抽象类中作为抽象方法而不必实现,而是在抽象类的子类中实现接口中的方法。

我的最新公众号欢迎关注一下

【原创】C#中的抽象类(abstract class)和接口(interface)的比较相关推荐

  1. php中的抽象类(abstract class)和接口(interface)

    一. 抽象类abstract class 1 .抽象类是指在 class 前加了 abstract 关键字且存在抽象方法(在类方法 function 关键字前加了 abstract 关键字)的类. 2 ...

  2. Java抽象类(Abstract Class)与接口(Interface)区别

    抽象类与接口比较 抽象类跟接口类似,都不能实例化,可能包含不需实现方法或已实现的方法. 抽象类可以定义一些不是静态或常量的字段,定义 public, protected, private访问级别的具体 ...

  3. 浅谈C#中的抽象类(abstract)和接口(interface)

    很多C#的初学者在编程时都容易把抽象类和接口搞混,甚至很多编程老鸟也没有弄明白为什么有了抽象类又搞个接口(这里也包括了本老鸟).所以这里整理了C#抽象类和接口的区别,详细的分析了抽象类与接口的概念与特 ...

  4. JAVA的abstract修饰符 接口interface用法 抽象类和interface的差别

    转自:http://blog.csdn.net/zhandoushi1982/article/details/8458081 abstract修饰符可以修饰类和方法. (1)abstract修饰类,会 ...

  5. abstract类和接口interface的联系和区别

    一,用关键字abstract类修饰的类称为abstract类(抽象类). abstract class A{ ----. } 特点: 1. 抽象类中可以有抽象方法和非抽象方法,但是抽象方法只允许声明不 ...

  6. 在谈PHP中的 抽象类(abstract class)和 接口(interface)

    一. 抽象类abstract class 1 .抽象类是指在 class 前加了 abstract 关键字且存在抽象方法(在类方法 function 关键字前加了 abstract 关键字)的类. 2 ...

  7. php interface 抽象类,解析PHP中的抽象类(abstract class)和 接口(interface)

    有关PHP中抽象类与接口问题,有些人或许明白,有些人或许模糊,在此,小编给大家详细介绍一下有关两者的概念及功能,请大家一定要珍藏噢! 一.抽象类abstract class 1.抽象类是指在 clas ...

  8. Java中抽象类 abstract和interface的区别

    abstract class和interface是Java语言中对于抽象类定义进行支持的两种机制,正是由于这两种机制的存在,才赋予了Java强大的面向对象能力. abstract class和inte ...

  9. C#中接口(Interface)与抽象类(abstract)的区别

    前言:在我学习接口(interface)与抽象类(abstract)时,我发现它们有一些相似之处也有一些不同,本博文来详细说说它们二者之间的区别: 文章目录: 一.不同之处: 1.声明上: 2.成员上 ...

  10. php 类 接口的区别吗,PHP的接口类(interface)和抽象类(abstract)的区别

    /** * 接口类:interface * 其实他们的作用很简单,当有很多人一起开发一个项目时,可能都会去调用别人写的一些类, * 那你就会问,我怎么知道他的某个功能的实现方法是怎么命名的呢,这个时候 ...

最新文章

  1. python第三方库jieba下载_Python第三方库____jieba
  2. jetty的Form too large异常解决方案
  3. 机器人越像人越好?Science子刊:被人形机器人一直盯着,你会变「蠢」
  4. 李飞飞、邓中翰当选美国国家工程院院士
  5. 【直播课】图像分类竞赛技巧与多标签分类实战
  6. 不四:产品工程师的修炼之路
  7. python练习代码保存
  8. 分段二次插值例题_分段三次插值
  9. 10 岁研究计算机,电脑神童“不务正业”的技术路
  10. 史海峰:万字长文剖析技术人如何成长
  11. Kubernetes-Service服务(十一)
  12. 【C语言】创建一个函数,判断某一正整数是否为水仙花数,并调用这个函数找出1000以内所有水仙花数...
  13. find_element 和find_elements 的区别
  14. imx6 android6.0.1,mfgtool刷写i.MX6 android6.0版本失败
  15. python入门教程pdf-python基础教程第4版pdf
  16. 气象要素色斑图的配色
  17. 2017初赛普及c语言答案,NOIP2017初赛普及组C++试题
  18. 【王佩丰】PowerPoint2010视频教程 1
  19. 网络口碑营销分几步完成?网络口碑营销的步骤
  20. 计算机三级嵌入式学习笔记(一)

热门文章

  1. 用户空间访问I2C设备驱动
  2. linux基本知识学习
  3. 身于“乱世”,我们程序员应该如何打算?
  4. 【图像处理面试题】——1
  5. 生成0到1之间随机数的C代码
  6. 内网穿透 无需公网ip_无需端口映射、无需公网IP,60秒实现FTP服务远程访问
  7. python列表批量 修改_python实现多进程按序号批量修改文件名的方法示例
  8. C语言中__attribute__ ((at())绝对定位的应用
  9. 【每日算法】基数排序算法
  10. 都江堰很美-佩服古人_Crmhf的一天