C# 中的继承接口

本文关键字:接口 继承 | 更新日期: 2023-09-27 18:34:06

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

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

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

谢谢

C# 中的继承接口

接口不实现任何东西

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

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

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

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

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

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

当您在接口之间创建这种层次结构时,您正在定义谁实现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();

接口表示协定。它们仅包含方法、属性、事件或索引器的签名。接口根本不实现。实现接口的类/结构必须实现接口定义中指定的接口成员。

您创建的层次结构只是意味着实现ICircle接口的任何内容也实现IShape接口。