Определите следующий интерфейс С#:
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(), который не знает, как реализовать. Таким образом, я, похоже, застрял либо с определением метода 'dummy' Area() для Rectangle, либо вообще не использующего наследование.
Есть ли способ обойти это? Я читал подробно через Richter clr через С# и в StackOverflow. Спасибо заранее!