EffectiveC#00--选择定义和实现接口,而不是继承

 1.继承就是说它是某物(is a的关系),针对相关类,而接口是说它有某个功能(behaves like.)可以是不相关的

   基类是描述对象是什么,接口描述对象有某种行为。

2.不能在接口里提供任何成员的具体实现.只是定义属性,事件和索引器等。

  抽象基类可以为派生类提供一些具体的实现,另外也描述了一些公共的行为。

  一个接口可以被任意多个不相关的类型实现。比起在基类中编码,实现接口的编码可以在开发人员中提供更强的伸缩性。

3.接口做参数和返回值:让方法的参数和返回值使用接口,可以让程序具有通用性,而且更容易重用。

  当类型以类的方式暴露一些属性时就暴露了类的全部接口。用接口你可以选择只暴露一部分想提供给用户使用的方法和属性。以前在类上实现接口的详细内容后来是可以修改的

public IListSource TheCollection //选择接口而不是Dataset类型
{ 
  get 
  { 
   return _dataSetCollection as IListSource;
  } 
}

4.雇员,客户和卖主都不相关,至少不存在继承关系。但他们却共享着某些功能。

  他们都有名字,地址,以及联系电话。你应该在一个接口中创建这些属性。

public interface IContactInfo 
{ 
string Name { get; } 
PhoneNumber PrimaryContact { get; } 
PhoneNumber Fax { get; } 
Address PrimaryAddress { get; }
 } 

public class Employee : IContactInfo { // implementation deleted. }

5.补充:曾经在不少书上看到作者推荐同时定义接口和抽象类,而非独立选择其中一种。

6.推荐在定义一个基类时应该用虚方法。

原文地址:https://www.cnblogs.com/tiantianle/p/4903108.html