在 c 中,抽象方法必须由子类实现。所以我的问题是,当一个接口继承另一个接口时,为什么它不实现所有基本接口成员。
public interface IShape
{
void Points();
}
public interface ICircle: IShape
{
void IsDrawAble();
}
当我在 Visual Studio 2010 中运行此程序时,没有出现错误。根据定义,ICircle 必须实现 Points 功能。
谢谢
在 c 中,抽象方法必须由子类实现。所以我的问题是,当一个接口继承另一个接口时,为什么它不实现所有基本接口成员。
public interface IShape
{
void Points();
}
public interface ICircle: IShape
{
void IsDrawAble();
}
当我在 Visual Studio 2010 中运行此程序时,没有出现错误。根据定义,ICircle 必须实现 Points 功能。
谢谢
接口不实现任何东西。
接口只包含具体类需要实现的成员列表。
重新声明基本接口已经需要的成员是没有意义的。
类似地,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
接口。