Я создаю абстрактный базовый класс, в котором есть функции, реализованные другими классами. Мои сомнения заключаются в следующем
1) Нужно ли давать «virtual» перед каждой функцией, которая должна быть переопределена дочерними классами? Я вижу некоторые примеры без виртуального ключевого слова, и все же они открыты для переопределения.
2) Мне нужно иметь функцию, которая будет реализована в базовом классе, и я не хочу, чтобы она была переопределена дочерними классами. Я добавил «фиксированное» ключевое слово перед этой функцией. Компилятор начинает жаловаться, что 'member' не может быть запечатан, потому что это не переопределение. Я что-то здесь не так делаю?
abstract public class ShapeBase
{
private ShapeDetails _shapedDetails;
public CampusCardBase(ShapeDetails shDetails)
{
_shapedDetails= shDetails;
}
public virtual void Draw();
public virtual float getWidth();
public virtual void Swap();
public virtual void Erase();
public sealed ShapeDetails getShapeDetails()
{
return _shapedDetails;
}
};