定义以下 C# 接口:
public interface IShape
{
int NumberOfLineSegments {get;}
int Area {get;}
}
接下来,我要定义几个矩形类:梯形、正方形等。所有这些类的 Area() 属性都不同,但 NumberOfLineSegments() 总是返回 4。因此,我想要一个名为 Rectangle(或 IRectangle)的“临时”类或接口,它看起来像:
public Rectangle : IShape
{
public int NumberOfLineSegments{get{return 4;}}
}
我希望 Rectangle 仅实现 NumberOfLineSegment(),并将其留给其派生类来实现其余部分:
public Square : Rectangle
{
public int Area() {get{return length*height;}
}
但是,由于 IShape 是一个接口,因此 Rectangle 类也必须实现 Area(),它不知道如何实现。因此,我似乎被卡住了,要么为 Rectangle 定义一个“虚拟”Area() 方法,要么不完全使用继承。
有没有办法绕过这个?我通过 C# 和 StackOverflow 广泛阅读了 Richter 的 clr。提前致谢!