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

推荐订阅源

D
DataBreaches.Net
GbyAI
GbyAI
aimingoo的专栏
aimingoo的专栏
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
月光博客
月光博客
大猫的无限游戏
大猫的无限游戏
M
MIT News - Artificial intelligence
腾讯CDC
博客园 - Franky
Engineering at Meta
Engineering at Meta
C
Check Point Blog
T
The Blog of Author Tim Ferriss
有赞技术团队
有赞技术团队
Microsoft Azure Blog
Microsoft Azure Blog
MyScale Blog
MyScale Blog
I
InfoQ
Blog — PlanetScale
Blog — PlanetScale
P
Proofpoint News Feed
The GitHub Blog
The GitHub Blog
N
Netflix TechBlog - Medium
Last Week in AI
Last Week in AI
S
SegmentFault 最新的问题
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
WordPress大学
WordPress大学

博客园 - Carefree's Blog

涉世之初--送给即将走出校园的80后朋友 点燃你工作的激情 成功CEO的二十一门必课! 35岁前成功的12条黄金法则 【推荐】如何提高财商 Faith of the Heart 值得珍藏的81句生活哲理名言 如何循序渐进向dotnet架构师发展 软件项目版本号的命名格式及软件版本命名说明 Log4Net使用指南 如何使用Windows Live Writer在博客园写Blog? 堆与栈的区别 应该选择哪种编程语言? C#与C++、Java之比较概览 千万别入错行 导师送给我的15条人生建议【转自CSDN】 ASP.NET中页面传值方法 Ajax资源网址【转载】 【推荐】骡友们推荐的各个学习英文网站的汇总【选择自CSDN i_like_cpp 的 Blog】 【推荐】.NET相关经典网站收藏。[转自白云黄鹤dotnet板]
接口与类的区别
Carefree's Blog · 2006-08-13 · via 博客园 - Carefree's Blog

一:接口负责功能的定义,项目中通过接口来规范类,操作类

     类是负责功能的具体实现

二:抽象类是不完全的类,里面有抽象的方法,属性,也可以有具体的方法和属性

     接口是个行为的规范,里面所有的东西都是抽象的,不能有修饰符,只能包含:属性,方法,事件,索引器   

    二者都不能实例化

抽象类本身已经位于很高的层次,一般在以下情况下会考虑用抽象类而不用接口.
(1)有公共的一些instance变量必须在顶层类加以抽象;
(2)在你的类层次中可能会有一些模板操作,或者固定的实现.
其他情况下一般考虑用接口,因为接口具有最大的灵活性.
例如,在我设计的一个类层次中需要定义三个接口
public void f1();
public void f2();
public void f3();
而f3()的功能是先后执行f1,f2,如果你用接口就没有办法把这些定义完全表达出来
而用abstract class 则可以
abstract class Test
{
    abstract protected void f1();
    abstract protected void f2();
public void f3()
{
    doF3();
    //这里可以添加对所有派生类有影响的代码。
}
protected virtual doF3()
{
    //派生类可以重写实现自己比较特别的功能
    f1();
    f2();
}
}

在这个例子中是一个典型的模版模式的实现,在基类中定义确定的操作序列,而不同的序列则由具体子类实现.