0

在 c 中,抽象方法必须由子类实现。所以我的问题是,当一个接口继承另一个接口时,为什么它不实现所有基本接口成员。

public interface IShape
{
  void Points();
}
public interface ICircle: IShape
{
  void IsDrawAble();
}

当我在 Visual Studio 2010 中运行此程序时,没有出现错误。根据定义,ICircle 必须实现 Points 功能。

谢谢

4

5 回答 5

8

接口不实现任何东西

接口只包含具体类需要实现的成员列表。
重新声明基本接口已经需要的成员是没有意义的。

类似地,abstract继承另一个abstract类(或接口)的类不需要实现它的任何方法。

于 2013-10-04T13:46:51.117 回答
2

当您实施时,ICircle您也需要实施Points()。以下代码无法编译:

class MyClass : ICircle
{
    void IsDrawAble() { }
}

所以你说的应该是:“根据定义,ICircle 的所有实现也必须实现 IShape 成员”

于 2013-10-04T13:47:48.137 回答
0

你自己回答了这个问题。因为它是一个接口。接口不是类,因此它们不必(实际上不能)实现它们继承的其他接口。

于 2013-10-04T13:48:39.310 回答
0

当您在接口之间创建这种层次结构时,您正在定义谁实现该Circle接口也将实现IShape. 因此,对于示例:

public class Test : ICircle
{
   public void Points()
   {
      // some code
   }

   public void IsDrawAble()
   {
      // some code
   }

}

使用它:

ICircle obj = new Test();
obj.Points();
obj.IsDrawAble();

或者

IShape obj = new Test();
obj.Points();
于 2013-10-04T13:49:39.820 回答
0

一个接口代表一个合约。它们仅包含方法、属性、事件或索引器的签名。接口根本没有实现。实现接口的类/结构必须实现接口定义中指定的接口成员。

您创建的层次结构仅仅意味着实现接口的任何东西ICircle也实现了IShape接口。

于 2013-10-04T13:51:05.917 回答