background image

  一个类可像从基类继承时那样,来实现一个接口,见例 3。

  例 3:

public ref class List : ICollection
{
 public:
  void Put(Object^ o)
  {
   // ...
  }
  Object^ Get()
  {
   // ...
  }
  // ...
};

  一个类能实现一个以上的接口,在这种情况下,必须使用逗号来分隔接口列表,顺
序倒不是很重要。当然,一个类在实现一个或多个接口时,也能显式地带有一个基类,在
这种情况下,基类通常(但不是必须)写在最前面。

  如果一个类实现了一个接口,但没有定义接口中所有的函数,这个类就必须声明为
abstract。当然了,任何从抽象类继承而来的类也是抽象类,除非定义了之前的这些抽象函
数。
接口不提供多重继承,与此相比,一个 CLI 类也只能有一个基类,然而,接口却提供某
种与多重类继承相似的功能,但概念与之完全不同,例如,一个类不能从接口中继承函
数定义;接口继承体系是独立于类继承体系的--实现同一接口的类也许会、但也许不会通
过类继承体系相互关联。

  例 4 演示了一个类:Queue,其与 List 无关联(但除了这个外,两者都是从 Object 继
承而来的),两者都实现了同一接口。

  例 4:

public ref class Queue : ICollection
{
 public:
  void Put(Object^ o)
  {