多态性是类为方法(这些方法以相同的名称调用)提供不同实现方式的能力。多态性允许对类的某个方法进行调用而无需考虑该方法所提供的特定实现。例如,可能有名为 Road 的类,它调用另一个类的 Drive 方法。这另一个类 Car 可能是 SportsCar 或 SmallCar,但二者都提供 Drive 方法。虽然 Drive 方法的实现因类的不同而异,但 Road 类仍可以调用它,并且它提供的结果可由 Road 类使用和解释。可以用不同的方式实现组件中的多态性: 接口多态性 - 多个类可实现相同的“接口”,而单个类可以实现一个或多个接口。接口本质上是类需要如何响应的定义。接口描述类需要实现的方法、属性和事件,以及每个成员需要接收和返回的参数类型,但将这些成员的特定实现留给实现类去完成。 继承多态性 - 多个类可以从单个基类“继承”。通过继承,类在基类所在的同一实现中接收基类的所有方法、属性和事件。这样,便可根据需要来实现附加成员,而且可以重写基成员以提供不同的实现。请注意,继承类也可以实现接口,这两种技术不是互相排斥的。 通过抽象类实现的多态性 - 抽象类同时提供继承和接口的元素。抽象类本身不能实例化,它必须被继承。该类的部分或全部成员可能未实现,该实现由继承类提供。已实现的成员仍可被重写,并且继承类仍可以实现附加接口或其他功能。 
接口多态性
组件编程中的一项强大技术是能够在一个对象上实现多个接口。每个接口由一小部分紧密联系的方法、属性和事件组成。通过实现接口,组件可以为要求该接口的任何其他组件提供功能,而无需考虑其中所包含的特定功能。这使后续组件的版本得以包含不同的功能而不会干扰核心功能。其他开发人员最常使用的组件功能自然是组件类本身的成员。然而,包含大量成员的组件使用起来可能比较困难。可以考虑将组件的某些功能分解出来,作为私下实现的单独接口。根据接口来定义功能的另一个好处是,可以通过定义和实现附加接口增量地将功能添加到组件中。优点包括: 简化了设计过程,因为组件开始时可以很小,具有最小功能;之后,组件继续提供最小功能,同时不断插入其他的功能,并通过实际使用那些功能来确定合适的功能。 
简化了兼容性的维护,因为组件的新版本可以在添加新接口的同时继续提供现有接口。客户端应用程序的后续版本可以利用这些接口的优点(如果这样做有意义)。
组件设计中使用接口的好处:使用多接口的组件软件开发的一个主要好处在于:随着对新功能需要的产生,可以通过实现附加接口来改进组件。例如,比方说 BankManager 系统升级到 BrokerageManagement 系统,可以用提供 MoneyMarketAccount 和 MultiUseAccount 对象的组件替换提供储蓄和支票帐户对象的组件。编译为使用个人帐户的旧版应用程序只要不包含针对个人帐户的代码,就仍可以使用新帐户类很好地运行。 以这种方式使用多接口时关键是:接口在定义并开始使用之后永远不能更改。有关“接口不变性”的详细信息,请参见接口定义和分解设计的注意事项。 
如果接口需要扩展,则创建新接口。有关详细信息,请参见接口定义和分解设计的注意事项。 
如果预计会出现版本问题,可以创建“抽象类”。抽象类属于必须被实现的类,不能自身实例化。可以根据需要通过添加附加方法、属性和事件为抽象类制定版本。继承类通过对基类做些必要的更改,可以包含新的功能,而无需像对待接口那样更改对该类的所有引用。有关详细信息,请参见抽象类与接口建议。 
组件的新版本可以通过实现新的和扩展的接口来提供新功能。 
组件的新版本可以通过继续提供旧接口来支持旧式代码。 
应用程序的新版本可以利用新的功能(即新的和扩展的接口),并且如有必要,也可以写新功能,以便仅当只提供旧接口时能使性能平稳降低。 
关于类与结构的差异请看
ms-help://MS.VSCC.2003/MS.MSDNQTR.2003FEB.2052/csref/html/vcwlkStructsTutorial.htm

解决方案 »

  1.   

    楼主看看这些文章。
    http://www.aspcool.com/lanmu/browse1.asp?ID=1133&bbsuser=aspnet
    http://www.aspcool.com/
      

  2.   

    结构和类的不同处是,它在box前只能以"嵌入"的形式生存.
    要么嵌在栈中,要么嵌在其他对象中.
    所以,没有box前的结构的引用.(ref结构其实是反复制)
    结构传值是复制操作.这和类传递的是引用也不同.
    结构还有其他特征,例如不允许继承,这些多看点参考就好了。接口是一种协议.
    为什么用接口而不用抽象类有几个原因。
    例如要和COM兼容.
    语言的原因是因为一个类可以实现多个接口,
    但不能同时继承多个类.例如 IDisposabe 做成接口 , 是因为你不能设计一个 DisposableBase 然后限定死所有的实现Dispose方法的类都继承它.