C#中的继承接口

时间:2013-10-04 13:45:42

标签: c# inheritance interface

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

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

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

由于

5 个答案:

答案 0 :(得分:8)

接口不实现任何

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

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

答案 1 :(得分:2)

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

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

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

答案 2 :(得分:0)

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

答案 3 :(得分: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();

答案 4 :(得分:0)

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

您创建的层次结构只意味着实现ICircle接口的任何实现都会实现IShape接口。