惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Know Your Adversary
Know Your Adversary
云风的 BLOG
云风的 BLOG
Recent Announcements
Recent Announcements
F
Fortinet All Blogs
B
Blog
罗磊的独立博客
宝玉的分享
宝玉的分享
Vercel News
Vercel News
Martin Fowler
Martin Fowler
N
Netflix TechBlog - Medium
P
Proofpoint News Feed
T
Threatpost
Security Latest
Security Latest
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
Stack Overflow Blog
Stack Overflow Blog
I
Intezer
P
Privacy International News Feed
D
Docker
月光博客
月光博客
博客园 - 三生石上(FineUI控件)
M
MIT News - Artificial intelligence
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
Recent Commits to openclaw:main
Recent Commits to openclaw:main
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
L
Lohrmann on Cybersecurity
Google DeepMind News
Google DeepMind News
The Last Watchdog
The Last Watchdog
A
Arctic Wolf
IT之家
IT之家
S
SegmentFault 最新的问题
S
Securelist
博客园 - 叶小钗
N
News and Events Feed by Topic
F
Full Disclosure
Security Archives - TechRepublic
Security Archives - TechRepublic
Engineering at Meta
Engineering at Meta
Hacker News: Ask HN
Hacker News: Ask HN
博客园 - Franky
GbyAI
GbyAI
AI
AI
Y
Y Combinator Blog
WordPress大学
WordPress大学
Latest news
Latest news
Microsoft Security Blog
Microsoft Security Blog
人人都是产品经理
人人都是产品经理
N
News | PayPal Newsroom
The Cloudflare Blog
www.infosecurity-magazine.com
www.infosecurity-magazine.com
I
InfoQ

博客园 - Nillson

传说中的Singleton.... 设计模式--简单工厂模式 策略模式 C# 实现的一个二叉树类 回顾一个面试题 再谈代理 常见的排序方法 预定义,宏定义 连接符,数值运算与函数 复杂查询 数据库中的Index和View的理解 重载和重写 采用递归的方法获得一棵树的所有叶节点 .NET中的新概念整理 4月要看的书 System.Runtime.InteropServices浅见 挂个牛人 一篇关于如何写注释的文章,值得收藏 Vistual Studio 2005到Vistual Studio 2008的版本转换问题 Visual Studio 2008 的一个Bug
抽象类与接口
Nillson · 2008-08-14 · via 博客园 - Nillson

抽象类与接口的功能有很类似的地方,接口可以认为是一种更加"抽象"的抽象类.他们都可以认为是提供一个可被继承并重写的方法的集合,但是在C# 中他们的用法有几点差别.

抽象类是类,而接口是接口! 这句貌似是废话的话其实应该可以说明他们之间区别的根本原因了.抽象类说到底是类,只不过它包含了抽象方法,它具有一个实例类所具有的一切特征.而接口是高度抽象的类,他跟一个实例类是有很大的不同.

1.抽象类支持实例方法,这对于类来说一点都不奇怪,但是高度抽象的接口是不可能包含实例方法的.

2.抽象类无法支持多继承,这也是C# 中类的特点,但是接口则不然.

3.抽象类可以声明并使用变量,但是接口则不可以.因为它是高度抽象的.但是值得注意的一点是接口中允许有抽象的属性,因为属性是方法而不是变量.

4.抽象类的方法允许有多种访问修饰符,这也是类的特征,但是接口默认的访问修饰符都是public而且在C# 语法中,接口成员之前的修饰符是不容许出现的,即便是public也不例外,这个道理也很简单,接口中的方法都是虚拟的,如果无法被其他类来继承并重写,这个方法就永远无法被使用到,声明这样的一个方法根本就是画蛇添足的.

5.抽象类可以定义构造函数,但是接口则不可以.这个可以从两方面来理解,接口中不允许有实例方法,而构造函数必须是实例方法;接口中的方法都是虚拟的,即便是有一个构造函数,它的作用又来构造谁呢?